- •2.2. Команды ос
- •2.3. Вызовы исполняемых программ
- •2.4. Вызовы других командных файлов
- •2.5. Команды управления выдачей информации на экран
- •Кpоме того существует возможность не отобpажать на экране дисплея какую-либо стpоку командного файла без пpименения команды echo off. Для этого достаточно, чтобы пеpвым символом в данной стpоке был @.
- •2.6. Команды организаций ветвлений и циклов
- •3. Программа работы
- •4. Требования к отчету
- •1. Цель работы.
- •5. Контрольные вопросы
- •6. Литература
2.6. Команды организаций ветвлений и циклов
2.6.1. Команда GOTO позволяет передавать управление на указанную метку и осуществлять повторное выполнение фрагментов командного файла.
Признаком метки является символ ":" в начале строки.
Пример файла example.bat:
:m
echo Вывод на принтер файла %1
copy %1 prn
pause
goto m
Первая строка содержит метку m (ее признаком является символ ":"), последняя - команду перехода на эту метку. Если вызвать этот командный файл следующим образом:
C:\>example.bat my.txt<ENTER>
то на принтер будет выведена одна копия файла my.txt. Здесь my.txt - фактический параметр, который подставляется вместо формального параметра %1.
2.6.2. Команда IF позволяет анализировать заданное условие и выполнять последующие действия в зависимости от результата проверки.
Формат команды: IF условие команда
Параметры:
команда - это любая допустимая команда (в том числе GOTO). Эта команда выполняется, если условие в команде IF истинно, в противном случае команда игнорируется;
условие - это одно из приведенных ниже выражений:
errorlevel число,
exist имя-файла,
строка1==строка2,
not условие.
Следует заметить, что при сравнении строк, содержащих символы параметров %0-%9, следует проявлять осторожность. Например, сравнение второго параметра командного файла со строкой SSS не следует делать так:
if %2 == SSS ...
Дело в том, что если в командном файле меньше двух параметров, то символы %2 будут замещены пустой строкой, и при выполнении команды возникает ошибка. Еще опаснее сравнение:
if SSS == %2 ...
Так как в этом случае, если в командном файле меньше двух параметров возможно выполнение совсем не той команды. Правильное сравнение выглядит так:
if -%2 == -SSS ...
Оно годится в любом случае.
Модификации этой команды:
- проверка кода завершения программы, исполняемой перед IF:
if errorlevel <n>
Любая программа может выработать в момент своего окончания код завершения. Он сравнивается с заданным числом n. Условие считается выполненным, если код завершения больше или равен n.
- проверка наличия файла в каталоге:
if exist <имя-файла или шаблон>
Условие считается выполненным при обнаружении файла в указанном или текущем каталоге.
- сравнение двух строк, которые могут задаваться через формальные параметры:
if %<n>==<текстовая строка>
Условие считается выполненным при совпадении параметра %<n> с конкретной строкой.
Любое из приведенных условий можно задавать со знаком логического отрицания NOT.
2.6.3. Команда FOR осуществляет повторение фрагмента командного файла заданное число раз. Она имеет следующую форму записи:
for %%<имя переменной> in <список значений переменной, разделенных пробелами> do <команда>. Например:
for %%A in (*.bat) do type %%A
Команда TYPE будет выполняться для всех файлов, расположенных в текущем каталоге и имеющих тип BAT.
2.6.4. CALL-вызов командного файла из другого командного файла.
Формат команды- CALL имя-командного-файла [параметры]
Команда CALL вызывает выполнение командного файла из другого командного файла.
Если в командной строке указаны какие-либо параметры, кроме имени командного файла, то эти параметры передаются командному файлу, они доступны там как значения символов %1-%9. Команда CALL работает только в версиях MS DOS и PS DOS, начиная с версии 3.3, и в DR DOS. В противных случаях используется команда EXIT.
Команда EXIT используется в случае вложенных вызовов командных файлов. Предположим, что из файла num1.bat необходимо вызвать файл num2.bat, выполнить его и вернуться в num1.bat. Вложенные вызовы с возвратом возможны лишь при создании копии командного процессора command.com. Вызов num2.bat в файле num1.bat должен осуществляться так: command /C num2, а при возврате в файле num2.bat должна появиться строка EXIT. Следует иметь в виду, что при вызове каждой копии командного процессора дополнительно расходуется около 4 Кбайт оперативной памяти.