При запуске файла QQQ командой " QQQ.bat Dir1 Name1 Name2 "его переменные %1, %2 и %3 получат значения соответственно Dir1, Name1 и Name2. При выполнении второй команды этого файла в подкаталог Dir1 будет скопирован файл Name1 под именем Name2. Команда CALL запустит на выполнение файл PPP.bat, передав ему в качестве первого параметра текстовую константу File_1, в качестве второго параметра – значение переменной %3 файла QQQ.bat (то есть Name2), а в качестве третьего параметра – значение первого параметра файла QQQ.bat (то есть Dir1). В результате переменные %1, %2 и %3 файла PPP.bat получат значения соответственно File_1, Name2 и Dir1, и два соответствующих файла будут соединены и сохранены в файле Name2, зарегистрированном в каталоге Dir1. После завершения работы файла PPP.bat будет выполнена команда TYPE файла QQQ.bat, которая выведет на экран содержимое файла Name2.
Можно запустить bat-файл из другого bat-файла и без команды CALL (например, вместо строки CALL PPP.bat File_1 %3 %1 записать строку PPP.bat File_1 %3 %1). Однако, в этом случае после завершения работы вложенного bat-файла PPP.bat не произойдет возврата к следующей строке исходного bat-файла QQQ.bat.
Команда GOTO <метка> - безусловный переход к строке с указанной меткой, то есть строке, которая начинается с двоеточия, после которого следует текст <метка>(не более 8 символов).
Команда IF <условие><команда>
или IF NOT<условие><команда>
Заданная <команда> будет выполнена в том случае, если <условие> истинно (или ложно). После завершения выполнения <команды> выполняется следующая строка командного файла. Если заданное <условие> ложно (или истинно), заданная <команда> не выполняется, и сразу выполняется следующая строка командного файла.
Параметр <условие> может иметь одну из следующих форм:
· EXIST <спецификация файла> - истинно, если файл существует;
· NOT EXIST <спецификация файла> - истинно, если такого файла нет;
· <строка1>==<строка2> - истинно при полном совпадении заданных символьных строк. Если в этом условии вместо строк используются переменные (%0... %9), то при выполнении команды на их место будут подставлены значения соответствующих параметров. Например: %n==<строка> - проверка совпадения n -го параметра с заданной текстовой строкой; %n==%m - проверка совпадения значений двух параметров. При сравнении параметров следует учитывать, что переменные, соответствующие отсутствующим параметрам, будут представлены символом "пробел", что может привести к ошибкам при выполнении bat-файлов, так как "пустые" параметры интерпретатором не обрабатываются. Для исключения таких ошибок при выполнении операций сравнения значений переменных с "пустыми" параметрами можно использовать при записи условий два одинаковых дополнительных символа (например, знак "минус") в левой и правой частях условия сравнения: например, условие -%n==- будет истинным, если n -й параметр пуст.
Errorlevel <значение>. Процедуры выполнения некоторых внутренних и внешних команд, завершая свою работу, формируют определенное числовое значение специальной системной переменной ERRORLEVEL (в переводе - "уровень ошибки"), называемой кодом завершения программы. Значение переменной ERRORLEVEL, сформированное последней из выполняемых программ, хранится в памяти ПК и может быть использовано другими программами, а также командой IF < условие> <команда > в составе параметра <условие>. Например, условие "ERRORLEVEL 5" будет "истинным", если переменная ERRORLEVEL получила значение, равное или большее 5.
Примеры кодов завершения некоторых программ, реализующих внешние команды, приведены в таблице 1.3.
Таблица 1.3 - Коды завершения программ
Команда | Errorlevel | Условие завершения программы |
FORMAT | 1, 2 3, 5 | Успешное форматирование диска Неопределенная ошибка Форматирование прервано пользователем Фатальная (неисправимая) ошибка |
XCOPY | Успешное копирование Не найдено файлов Копирование прервано пользователем Ошибка инициализации (не хватает памяти, не найден путь и др.) | |
DISKCOPY | Успешное копирование Ошибка ввода-вывода Копирование прервано пользователем Фатальная ошибка Ошибка инициализации (не хватает памяти, неправильный синтаксис) | |
REPLACE | Успешное завершение Не найдены входные файлы Не найден входной или выходной каталог Доступ к файлу или каталогу запрещен Нехватка памяти Неправильный формат команды Неправильный диск Неправильная версия DOS | |
CHOICE | ... n | Пользователем выбран 1-й пункт меню Пользователем выбран 2-й пункт меню ... Пользователем выбран n-й пункт меню |
В приведенном ниже фрагменте текста bat-файла команда IF анализирует числовое значение кода завершения программы форматирования диска и выдает соответствующее сообщение.
Format A:
If Errorlevel 4 Echo Можете смело выбрасывать свою дискету!
GoTo Exit