
6. Переходы по метке
ФОРМАТ: GOTO <метка>
Эта команда передает управление строке, следующей за той, в которой записана <метка>. Здесь <метка> — это строка символов, которая начинается с двоеточия и не содержит точку. Значащими являются только первые 8 символов метки.
Пример 4.
REM Пример работы GOTO
goto end
echo Все три эти строчки...
dir /s/w
echo ...не выполняются в BAT-файле
:end
cls
В этом примере выполнение с первой строки передается на строку, помеченную ":end". Таким образом, будет выполнена только команда CLS.
Задание. Создайте командный файл из Примера 4. Проверьте результат его работы.
7. Ветвления
Эта структура позволяет сделать выбор одного из двух вариантов при выполнении (или невыполнении) какого-либо логического условия. В BAT-файлах ветвление организуется командой IF. Команда IF позволяет проверять одно из трех условий: наличие файла на диске, совпадение двух цепочек символов и значение внутренней переменной DOS с именем Errorlevel.
Во всех вариантах команда, используемая в качестве параметра команды IF, выполняется, если условие в команде IF истинно.
Мы здесь рассмотрим два из возможных варианта использования команды IF.
а) Сравнение двух строк
ФОРМАТ: IF [NOT] <строка1>= =<строка2> <команда>
Заметим, что для сравнения строк здесь используется двойной знак равенства "= =".
Если <строка1> = = <строка2>, то выполняется <команда>. Здесь в качестве строки может выступать и замещаемый параметр.
Пример 5. Составим файл iftren.bat, который получает в качестве входного параметра либо символ "K", либо "P", и в зависимости от этого запускает соответствующую программу.
if '%1'= ='K' F:\WORK\KEYTREN\TRK
if {%1}= ={P} H:\LANG\TP\TURBO
if #%1#= =## echo ФОРМАТ: iftren K (или iftren P)
Вместо замещаемого параметра %1 подставляется либо "K", либо "P", либо пустая строка, если мы запустили BAT-файл без параметров. Первый IF проверяет, был ли параметр "K", и если да, то запускает программу «Клавиатурный тренажер». Второй IF проделывает то же самое для параметра "P" и программы TURBO. Третий IF проверяет, не был ли запущен BAT-файл без параметров, и если да, то выдает справку о правильном формате.
Задание. Создайте файл ifdir.bat, который бы в зависимости от введенного параметра командной строки ("S", "P" или "W") вызывал бы команду DIR с соответствующим параметром, а при отсутствии параметров выдавал бы напоминание о формате команды.
Команда IF часто используется вместе с GOTO.
Пример 6. Изменим файл iftren.bat из Примера 5, так чтобы перед запуском программы очищался экран и выводилось соответствующее сообщение:
@echo off
if '%1'= ='K' goto kt
if {%1}= ={P} goto tp
if *%1*= =** echo ФОРМАТ: iftren K (или iftren P)
goto end
:tp
cls
echo Загружаю TURBO PASCAL...
H:\LANG\TP\TURBO
goto end
:kt
cls
echo Загружаю программу TRK...
F:\WORK\KEYTREN\TRK
:end
Задание. Создайте файл iftren.bat из Примера 6 и проверьте три варианта выполнения этого командного файла.
б) Проверка существования файла на диске.
ФОРМАТ: IF [NOT] EXIST [<диск>][<путь>]<имя файла> <команда>
Этот вариант команды IF проверяет, имеется ли на диске файл с заданным именем и если да, то выполняется <команда>.
Пример 7. Составим файл ifexist.bat, который получает в качестве входного параметра имя файла, и если такой файл уже существует, то копирует его в файл с тем же именем, а расширением $$$. Если файл не существует, то выдается сообщение об этом:
@echo off
cls
if exist %1 goto yes
echo Такой файл не существует!
goto end
:yes
copy %1 *.$$$
:end
Задание. Создайте файл ifexist.bat из Примера 7 и проверьте два варианта выполнения этого командного файла.