Параметризация командных файлов

5.9.2. Параметризация командных файлов

 

Параметризация командного файла сводится к возможности использования в его теле пере­менных и их означивание перед запуском командного файла на выполнение. Такая техника обеспечивает разработку универсальных командных файлов и настройку их на конкретные условия применения путем передачи этим файлам той или иной информации (в частности, имен обра­батываемых файлов). Важно то, что настройка командного файла не требует его модификации.

DOS поддерживает два механизма (способа) передачи информации в командные файлы:

1) передачу через аппарат параметров;

2) передачу через окружение DOS.

Первый способ состоит в том, что в теле командного файла используются параметры, а при его вызове задаются аргументы, замещающие их. В командном файле допускается указывать до девяти параметров с именами %1 — %9. Порядок задания аргументов в командной строке описан в предыдущем пункте. Аргумент может состоять из любой последовательности символов, за исключением пробела. Действует принцип позиционного соответствия параметров и аргументов, т.е. вместо параметра %i подставляется і-й аргумент. В случае отсутствия аргумента параметр заменяется пустой строкой, а избыточные аргументы отбрасываются. В теле командного файла допускается также использовать параметр %0, вместо которого подставляется (возможно, непол­ная) спецификация данного командного файла, взятая из командной строки. Полезность этого неочевидна, но мы все же продемонстрируем ее примерами несколько позже. При необходимости задания большего, чем 9, числа аргументов не обойтись без команды SHIFT. Она сыграет положительную роль также в случае указания различного количества аргументов при том или ином вызове командного файла. Если внутри командного файла, скажем в имени файла, требуется задать символ %, то его следует продублировать (%%), чтобы избежать коллизии с признаком параметра или начала ссылки на значение глобальной переменной.

В качестве примера рассмотрим командный файл PR, осуществляющий печать текстового файла с начала страницы:

©ECHO OFF

ECHO   «Ctrl-L*   >PRN

TYPE %1 >PRN

Запустить его на выполнение можно командной строкой

PR MYTEXT.TXT

Второй способ передачи информации в командный файл сводится к предварительному при­сваиванию (командой SET) глобальной переменной требуемого значения и последующему ис­пользованию этого значения в теле командного файла. Чтобы получить в командном файле доступ к значению глобальной переменной, следует ее имя заключить в символы %. Вместо отсутствующей в окружении глобальной переменной подставляется пустая строка.

Например, командный файл, добавляющий к имеющимся новый маршрут поиска исполняемых файлов, можно представить следующим образом:

SET РАТН = %РАТН%; %1

Очевидно, глобальные переменные можно использовать в командных файлах аналогично переменным в программах на процедурных языках программирования: только что рассмотренная команда семантически эквивалентна оператору присваивания.

Однозначный ответ на вопрос о том, какой из рассмотренных способов передачи информации в командный файл лучше, отсутствует. Второй из них основан на побочном эффекте, что обычно считается плохой дисциплиной программирования. Однако только данный способ обеспечивает доступ к окружению DOS и избавляет пользователя от явного задания всех аргументов. Это особенно полезно, когда некоторые из них ие меняются при последовательных запусках командного файла.