Этот совет основан на совете под названием 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.