Szukaj…


Wprowadzenie

W tym temacie nauczysz się tworzyć, edytować, kopiować, przenosić i usuwać pliki wsadowo.

Tworzenie pliku wsadowo

Może być wiele powodów, dla których chcesz utworzyć plik tekstowy wsadowo. Ale bez względu na przyczynę, właśnie tak to robisz.

Jeśli chcesz zastąpić istniejący plik tekstowy, użyj > . Przykład:

@echo off
echo info to save > text.txt

Ale jeśli chcesz dołączyć tekst do już istniejącego pliku tekstowego, użyj >> . Przykład:

@echo off
echo info to save >> text.txt

Jeśli chcesz zapisać wiele wierszy tekstu w pliku, użyj ()>text.txt Przykład:

@echo off
(echo username
 echo password)>text.txt

Jak skopiować pliki wsadowo

Możesz skopiować pliki z jednego miejsca do drugiego. W tym przykładzie nauczymy Cię.

Możesz użyć polecenia xcopy . Składnia to xcopy c:\From C:\To

Przykład:

@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop

Istnieją również przełączniki, których możesz użyć. Jeśli chcesz je wyświetlić, otwórz Start Menu -> Accessories -> Command Prompt xcopy /? Start Menu -> Accessories -> Command Prompt a następnie wpisz xcopy /?

Przenoszenie plików

Za pomocą polecenia przenoszenia możesz przenosić pliki:

@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul

Meow.bat oznacza, który plik ma zostać przeniesiony. „Meow Folder” przenosi Meow.bat do Meow Folder . /Y mówi, aby nie pytać o potwierdzenie. Zastąpienie go przez /-Y powoduje, że plik wsadowy wyświetla monit o potwierdzenie. >nul ukrywa dane wyjściowe polecenia. Gdyby nie miał >nul , wyświetliłby:

    1 File Moved

Usuwanie plików

Za pomocą polecenia DEL (alias dla ERASE ) można usunąć pliki.

@echo off
del foo.ext

To polecenie usunie foo.ext z bieżącego katalogu. Można również określić ścieżkę i plik, takie jak:

del C:\Foo\Bar\Baz.ext

Ale zawsze idealnie jest umieszczać cudzysłowy ( " ) wokół ścieżek, patrz tutaj z powodu.


Istnieje kilka flag dostępnych dla DEL .

Flaga Funkcjonować
/P Monituje użytkownika przed usunięciem pliku (ów)
/F Wymuś usunięcie plików tylko do odczytu
/S Usuń pliki z podkatalogów
/Q Zapobiega wyświetlaniu monitu przez użytkownika
/A Filtr: usuwaj tylko określony plik przypisany,
użycie znaku - oznacza, że nie jest przypisany jako ten typ.

Kopiuj pliki bez xcopy

W tym przykładzie użytkownik BoeNoe pokazał, jak używać polecenia xcopy do kopiowania plików. Istnieje również dodatkowe polecenie o nazwie copy .

Oto prosty przykład:

copy foo.ext bar.ext

Kopiuje foo.ext do bar.ext i tworzy bar.ext gdy nie istnieje. Możemy również określić ścieżki do pliku, ale zawsze jest idealne umieszczanie cudzysłowów ( " ) wokół ścieżek, zobacz tutaj powód.


Istnieje również wiele flag dostępnych do copy , patrz copy /? lub help copy w wierszu polecenia, aby zobaczyć więcej.

Edycja n-tej linii pliku

Plik wsadowy nie ma wbudowanej metody zastępowania n tej linii pliku, z wyjątkiem funkcji replace i append ( > i >> ). Korzystanie for pętli, możemy naśladować tego rodzaju funkcji.


@echo off
set file=new2.txt

call :replaceLine "%file%" 3 "stringResult"

type "%file%"
pause
exit /b

:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion

set /a lineCount=%~2-1

for /f %%G in (%~1) do (
    if !lineCount! equ 0 pause & goto :changeLine
    echo %%G>>temp.txt
    set /a lineCount-=1
)

:changeLine
echo %~3>>temp.txt

for /f "skip=%~2" %%G in (%~1) do (
    echo %%G>>temp.txt
)

type temp.txt>%~1
del /f /q temp.txt

endlocal
exit /b
  • Główny skrypt wywołuje funkcję replaceLine , z nazwą pliku / który wiersz zmienić / i ciągiem do zamiany.

  • Funkcja odbiera dane wejściowe

    • To pętli przez wszystkie linie i echo je do pliku tymczasowego przed linią zastępczą
    • To echo linii zastępczej do pliku
    • Nadal wyświetla dane wyjściowe do pozostałej części pliku
    • Kopiuje plik tymczasowy do oryginalnego pliku
    • I usuwa plik tymczasowy.
  • Główny skrypt odzyskuje kontrolę i type wynik.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow