batch-file
Obsługa plików w plikach wsadowych
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.
- To pętli przez wszystkie linie i
Główny skrypt odzyskuje kontrolę i
type
wynik.