batch-file
Обработка файлов в пакетных файлах
Поиск…
Вступление
В этом разделе вы узнаете, как создавать, редактировать, копировать, перемещать и удалять файлы в пакетном режиме.
Создание файла в пакетном режиме
Существует несколько причин, по которым вы хотите создать текстовый файл в пакетном режиме. Но какова бы ни была причина, так вы это делаете.
Если вы хотите перезаписать существующий текстовый файл, используйте >
. Пример:
@echo off
echo info to save > text.txt
Но если вы хотите добавить текст в уже существующий текстовый файл, используйте >>
. Пример:
@echo off
echo info to save >> text.txt
Если вам нужно сохранить несколько строк текста в файле use ()>text.txt
Пример:
@echo off
(echo username
echo password)>text.txt
Как копировать файлы в пакетном режиме
Вы можете скопировать файлы из одного места в другое. В этом примере мы научим вас.
Вы можете использовать команду xcopy
. Синтаксис xcopy c:\From C:\To
Пример:
@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop
Существуют также переключатели, которые вы можете использовать. Если вы хотите просмотреть их, откройте командную строку в Start Menu -> Accessories -> Command Prompt
а затем введите xcopy /?
Перемещение файлов
Используя команду move, вы можете перемещать файлы:
@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul
Meow.bat
обозначает файл для перемещения. «Meow Folder» перемещает Meow.bat
в Meow Folder
. /Y
говорит, что не запрашивает подтверждение. Заменяя это с помощью /-Y
запрос командной строки для подтверждения. Функция >nul
скрывает вывод команды. Если у него не было >nul
, он выводит:
1 File Moved
Удаление файлов
Используя команду DEL
(псевдоним для ERASE
), можно удалить файлы.
@echo off
del foo.ext
Эта команда удалит foo.ext
из текущего каталога. Можно также указать путь и файл, например:
del C:\Foo\Bar\Baz.ext
Но всегда удобно указывать кавычки ( "
) вокруг путей, см. Здесь по этой причине.
Для DEL
есть несколько флагов.
Флаг | функция |
---|---|
/P | Запрашивает пользователя перед удалением файла (ов) |
/F | Сильно удалить файлы (-и) только для чтения |
/S | Удалить файл (ы) в подкаталогах |
/Q | Предотвращает приглашение пользователя |
/A | Фильтр: удалять только определенный атрибут файла, |
используя атрибут - символ, не отнесенный к этому типу. |
Скопировать файлы без xcopy
В этом примере пользователь BoeNoe показал, как использовать команду xcopy
для копирования файлов. Существует также дополнительная команда, называемая copy
.
Вот простой пример:
copy foo.ext bar.ext
Это копирует foo.ext
в bar.ext
и создает bar.ext
если он не существует. Мы также можем указывать пути к файлу, но всегда желательно размещать кавычки ( "
) вокруг путей, см. Здесь по этой причине.
Есть также много флагов для copy
, см. copy /?
или help copy
в командной строке, чтобы увидеть больше.
Редактирование N-й строки файла
Пакетный файл не поставляется со встроенным методом для замены n
й строки файла, кроме replace
и append
( >
и >>
). Используя for
циклов, мы можем эмулировать такую функцию.
@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
Главный скрипт вызывает функцию
replaceLine
, с именем файла / той строкой для изменения / и заменяемой строкой.Функция получает вход
- Он перемещается по всем линиям и
echo
их во временный файл до замены линии - Это
echo
- эс замена строки в файле - Он продолжает выводить на остальную часть файла
- Он копирует временный файл в исходный файл
- И удаляет временный файл.
- Он перемещается по всем линиям и
Главный скрипт возвращает элемент управления и
type
результат.