Использование пакетных файлов, часть 2
Этот совет основан на совете под названием link: / windows-Using_Batch_Files_Part_1 [Using Batch Files, Part 1]
, так что вы можете проверить это, прежде чем продолжить. В частности, мы работаем с файлом под названием «C: \ Bat \ Fun.bat», поэтому отобразите окно командной строки и измените каталог по умолчанию на C: \ Bat. Запустите блокнот, чтобы отредактировать Fun.bat, который сейчас выглядит так:
@ECHO OFF REM This file demonstrates the use of a few command-line statements ECHO Hello. This is my Fun.bat file. DIR %1
Последняя команда в файле — это команда DIR. Он создает список каталогов папки, указанной в качестве первого параметра, переданного в пакетный файл. Если вы не хотите, чтобы список отображался на экране, вы можете использовать символ «>», чтобы направить вывод в файл. Итак, давайте изменим Fun.bat, чтобы он принимал два параметра. Первая будет папкой, список каталогов которой вы хотите получить, а второй будет файлом, в который вы хотите поместить этот вывод. Ваш командный файл должен выглядеть так:
@ECHO OFF REM This file demonstrates the use of a few command-line statements ECHO Hello. This is my Fun.bat file. DIR %1 > %2
Вы вызываете, как и раньше, за исключением того, что теперь вы указываете второй параметр в командной строке:
C:\Bat> Fun.bat C:\Temp C:\Temp\Dirlist.txt
Запустите пакетный файл, и вы получите файл с именем C: \ Temp \ Dirlist.txt, который содержит список каталогов всех файлов в каталоге C: \ Temp.
Скажем, у вас есть тысячи файлов в каталоге C: \ Temp. Вместо того, чтобы просматривать длинный список, вы можете захотеть узнать, есть ли там конкретный файл и насколько он велик. Вы можете сделать это, «связав» вывод команды DIR с новой командой FIND.
В общем, большинство команд, которые производят выходные данные (например, то, что создается DIR), могут использоваться в качестве входных данных для другой команды — все в одной строке. Это называется «трубопровод», и символ, используемый для этой операции, — вертикальная черта («|»). Команда, ожидающая ввода, в нашем случае FIND, отображается справа от символа «вертикальная черта» (вертикальная полоса). Итак, давайте заменим нашу предыдущую команду DIR на команду, которая передает свой вывод в FIND:
@ECHO OFF REM This file demonstrates the use of a few command-line statements ECHO Hello. This is my Fun.bat file. DIR %1 | FIND "Dirlist"
Результатом этого изменения является выполнение команды DIR в указанной папке, но отправка ее вывода команде FIND, которая, в свою очередь, ищет в этом выходе строку «Dirlist» и выводит на экран результаты. Обратите внимание, что мы передадим только один параметр — имя папки, в которой будет выполняться DIR. Если вы забыли и случайно указали второй параметр, это не проблема. Поскольку в пакетном файле нет «% 2», любые дополнительные параметры будут проигнорированы.
Последнее, о чем мы поговорим в этом совете, касается времени. Есть команда «ВРЕМЯ / Т», которая отображает текущее время. Также существует команда TIMEOUT, которая заставляет пакетное задание приостанавливаться на заданное количество секунд. Наконец, есть еще один специальный символ, который вы можете использовать в пакетном файле, а именно амперсанд («&»). Он объединяет две (или более) команды, которые появляются в одной строке. Давайте воспользуемся этими командами для отображения текущего времени, подождем пять секунд и напишем новое время на экран. Пакетный файл должен выглядеть так:
@ECHO OFF REM This file demonstrates the use of a few command-line statements ECHO Hello. This is my Fun.bat file. DIR %1 | FIND "Dirlist" ECHO The current time is & TIME /T TIMEOUT 5 ECHO The new current time is & TIME /T
Это еще немного о пакетных файлах. Они могут сделать гораздо больше, но я хотел бы оценить, насколько они интересны, прежде чем писать о них гораздо больше. Если вы так склонны, укажите в комментариях ниже, хотите ли вы продолжить изучение командных файлов.
Этот совет (13103) применим к Windows 7, 8 и 10.