ECHO Слияние файлов завершено
При запуске файла 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