Команда Rem позволяет включать в командный файл комментарии, которые не будут интерпретироваться как команды во время исполнения этого файла. Они могут употребляться для улучшения удобочитаемости командного файла. Если включен режим вывода исполняемых команд на экран, то комментарии выводятся на экран, а если этот режим выключен командой ‘Echo off’, тогда комментарии в командном файле на экран не выводятся. Формат команды:
Rem любые-символы
Пример:
Rem Этот текст является комментарием
Перед комментариями, которые нежелательно выводить на экран даже при отладке, следует ставить символ ‘@’:
@Rem Этот текст является комментарием
Замечание. В комментарии не следует употреблять символы перенаправления ввода-вывода ‘<’, ‘>’ и ‘|’.
Паузы в командных файлах
Во время выполнения пакетного файла может возникнуть необходимость в его приостановке (например, для вставки нужной дискеты). Для этого можно использовать команду Pause. При выполнении этой команды на экран выводится сообщение:
Strike a key when ready ...
которое означает:
Нажмите любую клавишу, когда будете готовы …
После вывода этого сообщения выполнение командного файла приостанавливается. Если нажать любую алфавитно-цифровую клавишу, Пробел или Enter , тогда выполнение командного файла будет продолжено.
Замечание. Перед выдачей команды Pause полезно командой ‘Echo’ вывести сообщение пользователю о необходимых действиях, например вот так:
Echo Вставьте дискету в дисковод А:
Pause
9. Выполнение команды для набора файлов. Команда For
Команда For позволяет выполнить некоторую команду для нескольких файлов из указанного списка. Она может употребляться не только в командных файлах, но и вводиться пользователем в командной строке MS-DOS. Формат команды:
For %x in (список) dо команда
где х- любой символ, кроме ‘0’, ‘1’, …, ‘9’ (это ограничение нужно для того, чтобы не было совпадений с параметрами %0 - %9 в командном файле);
список - одно или несколько имен файлов, разделенных пробелами. В именах файлов можно использовать символы ‘*’ и ‘?’;
команда - любая программа или команда MS-DOS, кроме команды For. Если в команде употреблено выражение %x, тогда оно заменяется именами файлов из списка.
Примеры использования команды For в командной строке MS-DOS:
1. Для всех файлов из текущего каталога с расширением .asm вызвать макроассемблер MASM:
For %a in (*.asm) do masm %a
2. Сравнить файлы с расширениями .PAS и .ЕХЕ из текущего каталога с такими же файлами на диске А:
For %b in (*.pas *.exe) do Fc %b A:%b
3. Копировать все файлы из текущего каталога с именами, начинающимися с цифры, в текущий каталог диска D:
For %c in (1 2 3 4 5 6 7 8 9) do Copy %c*.* D:
Замечание. Если команды For используется в пакетном файле, а не в командной строке MS-DOS, тогда вместо аргумента %x надо указывать %%x (см. пример ниже).
Пример. Вызов команды For в командном файле. Для того, чтобы команды, приведенные в предыдущем примере, правильно работали в пакетном файле, их надо записать так:
For %%a in (*.asm) do masm %%a
For %%b in (*.pas *.exe) do Fc %%b A:%%b
For %%c in (1 2 3 4 5 6 7 8 9) do Copy %%c*.* D:
Замечание. Если на диске имеются длинные имена файлов или каталогов, созданные в Windows 95/98 или Windows NT, тогда команда For по умолчанию не будет замечать эти имена, а будет обрабатывать только соответствующие им короткие имена. В MS-DOS 7.0 Вы можете переключить команду For на работу с длинными именами. Для этого перед командой For надо выдать команду ‘LfnFor On’. Для возврата к работе с короткими именами нужно выдать команду ‘LfnFor Off’.
10. Организация переходов в командных файлах
Любой пакетный файл может содержать метки и команды перехода. Это позволяет управлять порядком выполнения содержащихся в нем команд.
Метки
Любая строка командного файла, начинающаяся с символа двоеточия ‘:’, воспринимается как метка. Имя метки определяется набором символов, следующих за двоеточием до первого пробела или конца строки. Остаток строки, начиная с первого пробела, игнорируется.
Переходы. Команда Goto
Для организации переходов по метке существует команда:
Goto метка
Если метка, указанная в команде Goto, отсутствует в командном файле, тогда его выполнение завершается с ошибкой.
Пример:
Goto Tag
. . .
:Tag
REM продолжение выполнения командного файла
В этом примере с помощью команды ‘Goto Tag’ производится переход к строке командного файла, следующей за меткой Tag.
11. Проверка условий в пакетных файлах. Команда IF
Команда IF позволяет в зависимости от выполнения некоторых условий выполнять или не выполнять требуемую команду. Формат команды:
IF условие команда
Здесь команда – это любая допустимая команда (в том числе Goto). Эта команда выполняется, если условие в команде IF истинно, в противном случае команда игнорируется.
Строка условие – это одно из приведенных ниже выражений:
ERRORLEVEL число– истинно тогда, когда код завершения предыдущей выполненной программы больше или равен заданному числу. Код завершения устанавливается программами при окончании их работы, по умолчанию этот код равен нулю.
EXIST имя - файла –истинно, если указанный файл существует.
NOT условие–истинно, когда указанное условие ложно.
строка1== строка2 – истинно, если строка1 и строка2 полностью совпадают. Если в этих строках имеются символы %0, %1, %2, …, %9, тогда вместо них подставляются параметры командного файла.
Пример. Создадим командный файл Typ.bat, который выводит указанный как параметр файл на экран. Формат вызова будет: ‘Typ имя-файла’. В этом командном файле нужно проверить, задан ли при вызове параметр и существует ли указанный файл. Командный файл Typ.bat имеет следующий вид:
@Echo off | – Отключаем ‘эхо’. |
IF -%1 == - goto NoParam | – Параметр задан? Если нет, тогда идем на метку NoParam. |
IF not exist %1 goto NoFile | – Файл существует? Если нет, тогда идем на метку NoFile. |
Type %1 | – Выводим содержимое файла на экран. |
Goto End | – Переходим в конец. |
:NoParam Echo Задайте параметр! Goto End | – Выводим сообщение, что нужно задать параметр, затем переходим в конец. |
:NoFile Echo Файл не найден! | – Выводим сообщение, что указанный в качестве параметра файл не найден. |
:End | – Конец командного файла. |
Замечание. Коды возврата, которые имеет смысл проверять с помощью команды ‘IF ERRORLEVEL’, возвращают следующие программы MS-DOS: ChkDsk, Choice, Defrag, Deltree, DtskComp, DiskCopy, Find, Format, KeyB, Move, MSAV, Replace, Restore, Scandisk, SetVer и ХСору.
Сравнение с пустой строкой. Используя в команде IF символьные имена параметров %0 - %9 следует проявлять осторожность. Например, сравнение второго параметра командного файла со строкой ‘sss’ не следует делать так:
IF %2 == sss …
Дело в том, что если в командный файл передано меньше двух параметров, тогда все символы %2 в нем будут замещены пустой строкой, и при выполнении команды возникнет ошибка из-за того, что аргумент слева от оператора ‘==’ будет отсутствовать. Правильная команда сравнения должна использовать префикс ‘-’ в аргументах:
IF -%2 == -sss ...
Эта команда работает корректно при любом значении параметра %2.
Дата: 2019-12-10, просмотров: 278.