Вызов одного пакетного файла из другого
CALL [диск:][путь]имя_файла [параметры]
параметры - Набор параметров командной строки, необходимых пакетному файлу.
Изменение команды CALL при включении расширенной обработки команд:
Команда CALL допускает использование меток в качестве адресата вызова.
Применяется следующий синтаксис:
CALL :метка аргументы
При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла.
Команда GOTO /? выводит описание расширения GOTO :EOF, позволяющее выполнить быстрый возврат из пакетного файла.
Кроме того, раскрытие ссылок на аргументы пакетных файлов (%0, %1 и т.д.) изменено следующим образом: %* в пакетном файле обозначает все аргументы (например, %1 %2 %3 %4 %5 ).
Операции подстановки параметров пакетного файла (%n) также расширены.
Допускается применение следующих синтаксических конструкций:
%~f1 | переменная %1 расширяется до полного имени файла |
%~d1 | из переменной %1 выделяется только имя диска |
%~p1 | из переменной %1 выделяется только путь к файлу |
%~n1 | из переменной %1 выделяется только имя файла |
%~x1 | из переменной %1 выделяется расширение имени файла |
%~s1 | значение параметров n и x изменяется так, что они работают с кратким именем файла |
%~$PATH:1 | проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %1 заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку |
Ввод ответа пользователя с клавиатуры
Ожидает ответа пользователя.
CHOICE [/C[:]варианты] [/N] [/S] [/T[:]c,nn] [текст]
/C[:]варианты Варианты ответа пользователя.
По умолчанию строка включает два варианта: YN
/N | Ни сами варианты, ни знак вопроса в строке приглашения не отображаются. |
/S | Учитывать регистр символов. |
/T[:]c,nn | Ответ "c" выбирается автоматически после nn секунд ожидания |
Текст | Строка приглашения |
После выполнения команды переменная ERRORLEVEL приобретает значение, равное номеру выбранного варианта ответа.
Вывод сообщений и переключение режима отображения команд на экране
ECHO [ON | OFF]
ECHO [сообщение]
Введите ECHO без параметра для определения текущего значения этой команды. Другой способ отмены отображения выполняемых команд - использование символа "@" в первой позиции строки. Этот символ отменяет отображение данной строки. Таким образом, команда "@ECHO OFF" не отображается сама и отменяет отображение следующих за ней команд.
Выполнение указанной команды для каждого файла набора
FOR %переменная IN (набор) DO команда [параметры]
%переменная | Подставляемый параметр. |
(набор) | Набор, состоящий из одного или нескольких файлов. Допускается использование подстановочных знаков. |
Команда | Команда, которую следует выполнить для каждого файла. |
Параметры | Параметры и ключи для указанной команды. |
В пакетных файлах для команды FOR используется запись %%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I).
Добавление поддерживаемых вариантов команды FOR при включении расширенной
обработки команд:
FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры]
Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивке его на отдельные строки текста и выделении из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметры "ключи" служит для переопределения заданных по умолчанию правил обработки строк. Ключи представляют собой заключенную в кавычки строку.