Общие сведения о командных файлах

5.9.1. Общие сведения о командных файлах

 

Командным (пакетным — от batch) файлом называется последовательность команд DOS, записанная в текстовый файл и выполняемая путем ввода спецификации этого файла с клавиатуры аналогично единственной команде DOS. Такой файл представляет собой системную макрокоманду и является аналогом процедуры в программах. Наличие средств создания и использования командных файлов делает командный язык DOS расширяемым.

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

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

Командные файлы обычно создаются каким-либо текстовым редактором, в частности EDLIN. Маленькие же файлы зачастую удобнее сформировать командой COPY CON file. Каждый ко­мандный файл должен иметь расширение ВАТ (от BATch).

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

COPY CON DIRAB.BAT ◄ Enter►

CLS◄ Enter ►

DIR A: ◄ Enter ►

DIR B Enter►

F6 ► Enter ►

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

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

При необходимости прервать выполнение командного файла следует нажать комбинацию клавиш Ctrl-Break, в результате чего появится следующее сообщение:

Terminate bath job (Y/N)?

(Завершить пакетное задание (Y—да/N—нет)?)

В случае ответа Y выполнение командного файла принудительно прекратится, а N — будет продолжено. При создании и использовании командных файлов полезно знать следующее:

— в конце одного командного файла можно специфицировать имя другого с тем, чтобы последовательно выполнить два файла путем указания в командной строке только первого из них. Следует иметь в виду, что указание командного файла внутри другого командного файла приводит к безусловной передаче управления без последующего возврата в него;

— внутри командных файлов допускается использовать все имеющиеся в DOS средства перенаправления ввода-вывода;

— стандартный ввод-вывод всего командного файла как единого целого перенаправлять не допускается;

— в начале строки командного файла можно указать символ @, вследствие чего данная строка не будет отображаться на экране дисплея перед ее интерпретацией (но символ @ не влияет на стандартный ввод-вывод команды или программы);

— текущий привод, текущие каталоги и состояние окружения DOS при входе в командный файл не изменяются.

Средства DOS для поддержки командных файлов П9зводяют:

— создавать линейные командные файлы;

— организовывать разветвления в командных файлах;

— создавать циклы в командных файлах;

— разрабатывать вложенные командные файлы;

— производить вывод информации из командных файлов;

— приостанавливать интерпретацию командных файлов для осуществления тех или иных действий;

— осуществлять параметризацию командных файлов;

— управлять отображением выполняемых строк командных файлов на экране дисплея;

— включать в командные файлы комментарии.

Тем не менее DOS не предоставляет удобных средств для создания интерактивных командных файлов. Хотя такая возможность в принципе и имеется, но требуется разработка специальных программ, выдающих в зависимости от ответа пользователя различные коды возврата.  Эти программы включаются в командные файлы, и по возвращаемым ими кодам организуются разветвления. Вместо создания собственной универсальной или специализированной программы пользователь может воспользоваться одной из имеющихся на рынке утилит, например утилитой Batch Enhancer из комплекта Norton Utilities.

Если Вы хотите выполнять одну и ту же последовательность команд при каждой загрузке DOS, создайте файл AUTOEXEC.BAT и поместите его в корневой каталог системного диска. Обычно в файле автозапуска AUTOEXEC.BAT размещают команды DATE, TIME, PROMPT, SET, PATH и (при необходимости) APPEND, а также загружают различные резидентные программы, в частности, драйверы. Последней строкой файла автозапуска, как правило, запускается одна из оболочек DOS (в частности, Norton Commander).