
8. Циклическая подстановка
В языке BAT-файлов нет полноценной команды для определения циклов. Однако, есть команда для циклического выполнения определенной команды для всех файлов из указанного множества.
ФОРМАТ: FOR %%<символ> IN (<список>) DO <команда>
Параметр <команда> - это любая допустимая команда DOS. В параметре <список> могут быть использованы любые имена (имена файлов или символьные строки), разделенные знаком пробела. Локальный аргумент <символ> может состоять только из одной латинской буквы. Имена из <списка> последовательно присваиваются локальному аргументу.
Примеры правильных заданий <списка>:
(*.doc)
(*.txt a*.bat *.exe)
(1 2 3 4 5 6 7)
(A B C D E F G H I J)
Пример 8. Последовательный вывод на экран содержимого всех TXT-файлов текущей директории.
@echo off
for %%f in (*.txt) do type %%f
В команду type %%f вместо %%f поочередно подставляются имена всех TXT-файлов текущего каталога.
Пример 9. Файл ABFG.bat позволяет создать четыре каталога: CAT-A, CAT-B, CAT-F, CAT-G, а также скопировать в них файлы, которые начинаются соответственно с A, B, F, G.
@echo off
for %%c in (A B F G) do md cat-%%c
for %%f in (A*.*) do copy %%f cat-A
for %%f in (b*.*) do copy %%f cat-b
for %%f in (f*.*) do copy %%f cat-f
for %%f in (g*.*) do copy %%f cat-g
Задание. Создайте командный файл ABFG.bat и проверьте его работу.
Составьте другой командный файл, с помощью которого можно удалить все каталоги, созданные файлом ABFG.bat.
9. Вызов bat-файла из другого bat-файла
Из тела одного BAT-файла можно вызвать другой. Это может потребоваться, например, если нужно в команде циклической подстановки выполнить не одну, а несколько команд. Существует два способа вызова одного командного файла из другого.
а) В командном файле пишется имя вызываемого BAT-файла (с параметрами, если они есть). При этом управление передается в вызываемый BAT-файл и после достижения его конца НЕ возвращается в главный BAT-файл. Чтобы такой возврат произошел, нужно
б) Вызывать BAT-файл с помощью команды CALL:
ФОРМАТ: CALL <имя вызываемого BAT-файла> [<список параметров>]
Задание. Создайте BAT-файл с вызовом другого BAT-файла. Сначала используйте вариант вызова без, а затем с использованием команды CALL.