Параметризация КФ сводится к использованию в его теле переменных и их инициализацию перед запуском командного файла на выполнение. Это обеспечивает разработку универсальных командных файлов и настройку их на конкретные условия применения путем передачи этим файлам той или иной информации (в частности, имен обрабатываемых файлов). При этом настройка командного файла не требует его модификации.
ОС поддерживает два механизма (способа) передачи информации в командные файлы:
1) передачу через аппарат параметров,
2) передачу через окружение ОС.
Первый способ состоит в том, что в теле командного файла используются параметры, а при его вызове задаются аргументы, замещающие их. Допускается указывать до девяти параметров с именами %1 — %9. Аргумент может состоять из любой последовательности символов, за исключением пробела. Действует принцип позиционного соответствия параметров и аргументов, т.е. вместо параметра %i подставляется i-й аргумент. В случае отсутствия аргумента параметр заменяется пустой строкой, а избыточные аргументы отбрасываются. В теле командного файла допускается также использовать параметр %0, вместо которого подставляется (возможно, неполная) спецификация данного командного файла, взятая из командной строки. При необходимости задания большего, чем 9, числа аргументов используется команда SHIFT. Если внутри командного файла, например, в имени файла, требуется задать символ %, то его следует продублировать (%%).
Примеры.
1) Пример командного файла PR, осуществляющего печать текстового файла, имя которого задается параметром КФ:
@ЕСНО OFF (отключает отображение команд при их выполнении)
TYPE %l >PRN
Формальному параметру %1 будет поставлен в соответствие аргумент, указанный в обращении к файлу, которое может иметь вид:
PR M.TXT
Где PR – имя КФ, M.TXT – аргумент.
На принтере будет напечатано содержимое файла M.TXT
2) Пусть, например, в процессе работы в текущем каталоге work приходится время от времени переходить в другой каталог, наприме G, запускать там некоторую программу, например, tc.exe, а по окончании ее работы – возвращаться в исходный каталог. Все эти действия можно выполнить с помощью командного файла, например, с именем S.BAT
CD \%1
%2
CD \WORK
Обращение к КФ может иметь следующий вид:
S G TC. Строки g и tc займут место параметров %1 и %2 в тексте командного файла S.bat. Фактические значения могут принимать различные значения, что позволяет запускать программы из указанных каталогов.
3) Создать командный файл A.BAT, который:
а) находит в заданном текстовом файле строки, содержащие заданную цепочку символов, выводит их на экран и записывает во временный файл
б) сортирует временный файл
в) выводит временный файл на печать
г) уничтожает временный файл
TYPE %2
FIND "%1" %2 >%3
TYPE %3
SORT %3 >prn
DEL %3
Пример вызова.
A.BAT ПРИВЕТ 1.TXT 2.TXT
Второй способ передачи информации в командный файл заключается в предварительном присваивании (командой SET) глобальной переменной требуемого значения и последующем использовании этого значения в теле командного файла. Чтобы получить в командном файле доступ к значению глобальной переменной, следует ее имя заключить в символы %. Вместо отсутствующей в окружении глобальной переменной подставляется пустая строка.
Например, командный файл, добавляющий к имеющимся новый маршрут поиска исполняемых файлов, можно представить следующим образом:
SET РАТН=%РАТН%;%1
Очевидно, глобальные переменные можно использовать в командных файлах аналогично переменным в программах на процедурных языках программирования.
12.3 Использование символа @ (Эт)
Обычно при выполнении команды командного файла выводятся на мониторе (вместе с приглашением OS). Для отключения вывода используются:
- Символ @
- Команда ECHO
Символ @, записанный в начале строки командного файла, запрещает ее отображение на экране перед исполнением. Это нужно:
1) чтобы скрыть какую-то информацию,
2) не портить изображение на экране или
3) не захламлять экран ненужными сведениями.
Следует четко различать отображение команды на экране (эхо-отображение) и вывод результатов ее выполнения на дисплей. Второй тип сообщений символом @ не подавляется.Для этого нужно использовать перенаправление ввода-вывода.
Например, если в командном файле имеется строка
COPY A:M.TXT В:
, то в результате ее интерпретации на экран будет выдано следующее:
Символ @ действует только на ту строку КФ, в начале которой он записан. Для управления эхо-отображением последовательностей строк следует использовать команду ECHO.
Основными командами, использующимися в командных файлах являются:
CALL, ECHO, FOR , GOTO, IF, PAUSE, REM, SHIFT.
Перечисленные команды увеличивают выразительность и гибкость командных файлов.