Синтаксис команды MS DOS. Соглашения об имени файла, именах устройств, пути.

Общие сведения о командах

Диалог пользователя с MS DOS осуществляется в форме команд. Операционная система готова к диалогу, если на экране имеется приглашение A: или C:>. Команда состоит из имени команды и параметров, разделенных пробелами. Команда может набираться как прописными так и строчными латинскими буквами, а завершается нажатием клавиши <ENTER>.

Синтаксис структуры команды MS DOS удобно представить в форме Бэкуса-Наура:

<команда>::=<имя команды><пробел><параметр 1><пробел><параметр 2><пробел> <параметр i>

<параметр i>::=<устройство> | <имя каталога> | <путь> | <спецификация файла> | <переключатель>

В качестве параметров команд выступают имена устройств, каталогов, имена файлов, путей доступа к файлам и переключатели ,уточняющие действие команды. Команды MS DOS бывают двух типов: внутренние и внешние. Внутренние команды выполняются командным процессором MS DOS (файл COMMAND.COM). Внешние команды реализуются программами, поставляемыми вместе с операционной системой в виде отдельных файлов.

Имя устройства

В состав компьютера входит множество устройств, к некоторым из них можно обращаться через команды ОС. К таким устройствам относятся внешние запоминающие устройства (ВЗУ), клавиатура, монитор, принтер, порты.

В качестве ВЗУ используются устройства хранения информации на магнитных, лазерных и магнитооптических дисках, которые обозначаются буквами латинского алфавита. Имена A: и B: зарезервированы за гибкими магнитными дисками. Обратите внимание: после имени диска обязательно ставится двоеточие!

Для смены текущего диска достаточно набрать его имя в командной строке. Например: A: - переключение на работу с гибким диском.

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

Обмен данными с внешним миром компьютер реализует через специальные устройства, получившие название портов. Для ОС порты и устройства, подключаемые через соответствующий порт к компьютеру, имеют одинаковое имя. В системе известны следующие имена портов:

COM1 - COM3 – устройства (порты) с последовательным интерфейсом;

LPT1 - LPT3 – устройства (порты) с параллельным интерфейсом.

Для принтера в системе зарезервировано имя PRN, а поскольку принтер обычно подключается через параллельный порт, то к нему можно обратиться и по имени порта, например, LPT1

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

Имя файла

Синтаксис имени файла:

<имя файла>::=<имя>.<расширение>

Имя файла MS DOS содержит от 1 до 8 символов, а расширение - от 0 до 3 символов. Допустимы прописные и строчные буквы латиницы и кириллицы, цифры, знаки пунктуации и специальные символы: $, #, &, @, !, %, (, ), {, }, ~, ^, -, _. В системе WINDOWS 95/98/2000 имя файла может содержать до 255 символов.

Имена файлов не должны совпадать с именами устройств, зарезервированными в системе.

Имя каталога

Каталог - специальное место на диске, в котором хранятся имена файлов и основные сведения о них. В каждом каталоге - множество файлов, но каждый файл регистрируется только в одном каталоге. Каждый каталог имеет свое имя и может быть зарегистрирован в другом каталоге. Если каталог А зарегистрирован в каталоге В, то А является подкаталогом В, а В - надкаталог или родительский каталог для А.

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

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

. – имя текущего каталога;

.. – имя родительского каталога;

… - имя прародительского каталога (поддерживается только в WINDOWS).

Имя пути

Путь - это последовательность из имен каталогов, разделенных символом "\". Путь задает маршрут от текущего или корневого каталога к тому каталогу, где находится нужный файл.

Если путь начинается с символа "\", то он называется абсолютным и вычисляется от корневого каталога диска, иначе – путь является относительным и отсчитывается от текущего каталога. Например: CD \DOS\EXE - смена текущего каталога с абсолютным указанием пути; CD ..\LETTER - смена текущего каталога с относительным указанием пути.

Полное имя файла.

Полное имя файла (или спецификация файла) имеет вид:

<имя дисковода><путь>\<имя файла>

По умолчанию используются текущий дисковод и текущий каталог.

Во многих командах в именах файлов могут использоваться метасимволы: «*» и «?» для выполнения групповых операций. Символ "*" обозначает любое число любых символов, "?" – один произвольный символ. Например: С:\DOS\EXE\PRINT.BAT - полная спецификация файла; C:\DOS\EXE\*.BAT - групповая спецификация файлов с любым допустимым именем и расширением BAT.

Командные файлы MS DOS.

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

Описание внутренних команд DOS, предназначенных для программирования командных файлов:

Команда CALL

Вызывает один командный файл из другого, не завершая его выполнение.

CALL [диск:][маршрут]имя_файла [параметры_ком_файла]

Параметр [диск:][маршрут]имя_файла

задает расположение и имя вызываемого командного файла. Файл должен иметь расширение .BAT."Параметры_ком_файла" - это информация командной строки, необходимая для вызываемого команд­ного файла, включая параметры, имена файлов, подставляемые параметры с %1 по %9 и переменные опе­рационной среды.

Вы можете вызывать командный файл рекурсивно, однако при этом во избежание зацикливания тре­буется обеспечить команду выхода. Не используйте в команде CALL конвейеризацию (|) и символы пере­направления (<<, <, > и >>).

Команда CHOICE

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

CHOICE [/C[:]клавиши] [/N] [/S] [/T[:]c,nn] [текст]

Параметр "текст" задает текст, который вы хотите выводить перед подсказкой. Вопросительный знак необходим только в том случае, если вы включаете в текст перед подсказкой символ /. Если вы не задаете текст, CHOICE выводит на экран только подсказку.

Параметр /C[:]клавиши задает допустимые в подсказке клавиши. При выводе на экран клавиши будут разделяться запятыми, заключаться в квадратные скобки ([]) и сопровождаться вопросительным знаком. Если вы не указываете параметр /C, CHOICE использует по умолчанию YN. Двоеточие (:) не обязательно.

Параметр /N приводит к тому, что CHOICE не выводит подсказку. Однако текст перед подсказкой выво­дится. При задании /N указанные клавиши все равно будут доступны.

/S приводит к различимости в CHOICE регистра символов. Если параметр /S не задан, то для любых за­данных пользователем клавиш будет восприниматься как верхний, так и нижний регистр.

Если задан параметр /T[:]c,nn, то команда CHOICE перед использованием заданной клавиши по умол­чанию делает паузу в течении заданного числа секунд. В /T указываются следующие значения: c -опреде­ляет символ, который спустя nn секунд будет задаваться по умолчанию (этот символ должен быть в наборе символов, заданном в параметре /C); nn - задает продолжительность паузы в секундах (допустимые зна­чения лежат в диапазоне от 0 до 99 - если задается 0, то перед назначением по умолчанию будет пауза).

Первая назначенная вами клавиша возвращает значение 1, вторая - 2, третья - 3 и т.д. Если пользова­тель нажимает клавишу, отсутствующую в списке назначенных клавиш, то CHOICE дает предупреждающий звуковой сигнал (передает на консоль символ 07h).

Если CHOICE обнаруживает состояние ошибки, то возвращает значение 255. Если пользователь пе­редает CTRL+BREAK или CTRL+C, CHOICE возвращает значение, равное 0.

Если по истечении 7 секунд пользователь не нажмет клавишу, CHOICE выбирает N и возвращает зна­чение ERRORLEVEL 2. При нажатии соответствующей клавиши до истечения 7 секунд CHOICE возвра­щает значение, соответствующее выбору пользователя.

Команда ECHO

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

ECHO [ON¦OFF]

Чтобы использовать команду для вывода сообщения, запишите:

echo [сообщение]

Параметр ON¦OFF определяет, нужно ли включить или выключить эхоотображение. Чтобы вывести на экран текущую установку, задайте команду ECHO без параметра. "Сообщение" задает текст выводимого на экран сообщения.

О приостановке выполнения командного файла рассказывается в описании команды PAUSE.

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

При указании команды ECHO OFF в командной строке командная подсказка не выводится на экран. Чтобы вновь ее увидеть, наберите

ECHO ON.

Для предотвращения эхоотображения конкретной строки вы можете задать перед ней в командном файле символ @. Чтобы отобразить на экране пустую строку, наберите команду ECHO с точкой (ECHO.).

Пробел между ними не указывается.

При использовании команды ECHO нельзя указывать символ конвейеризации (|) или перенаправления (< или >).

Команда FOR

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

В первом случае используется синтаксис:

FOR %%переменная IN (множество) DO команда [параметры]

а во втором случае:

FOR %переменная IN (множество) DO команда [параметры]

Параметр %%переменная или %переменная представляет подставляемую переменную. Команду FOR заменяет эту переменную текстом каждой строки в заданном множестве, пока команда после ключевого слова DO не обработает все файлы. "Множество" задает один или более файлов или текстовых строк, кото­рые вы хотите обработать с помощью заданной команды. Скобки обязательны. "Команда" задает ко­манду, выполняемую для каждого включенного в множество файла.

"Параметры" задают параметры данной команды (если она их использует). IN и DO - это не параметры, а обязательные ключевые слова команды FOR.

Чтобы избежать путаницы с параметрами командного файла %0 %9, для переменных следует использо­вать любые числа кроме 0 - 9. В простом командном файле вам хватит одного символа, например, %%F. Вложенность команд FOR на одной командной строке не допускается.

Параметр "множество" представляет одну или несколько групп файлов. В нем можно использовать тра­фаретные символы (* и ?). Допустимы следующие множества (*.doc), (*.doc *.dat *.rpt), (olg*.doc olgj*.rpt svt*.doc svt*.rpt), (ol??1991.* kr??1991.*).

При использовании команды FOR первое значение в множестве заменяет %%переменную (или %пере­менную), и MS-DOS выполняет для обработки этого значения заданную команду. Этот процесс продолжа­ется, пока MS-DOS не обработает все файлы (или группы файлов) в множестве.

Предположим, вы хотите использовать команду PRINT для распечатки содержимого всех файлов в те­кущем каталоге с расширением .DAT и .RPT. Для этого наберите команду:

for %f in (*.dat *.rpt) do print %f

Каждый файл в указанными расширениями подставляется в качестве %F, пока не будет распечатано содержимое всех файлов. В этой команде можно использовать символы конвейеризации и перенаправле­ния. Например, предыдущую команду можно модифицировать следующим образом:

for %f in (*.dat *.rpt) do type %f > prn:

Команда GOTO

Передает управление MS-DOS на строку в командном файле, которая помечена заданной меткой. MS-DOS продолжает обработку команд, начиная со следующей после метки строки. Эту команду можно ис­пользовать только в командных файлах.

GOTO метка

Параметр "метка" задает строку командного файла, на которую должна перейти MS-DOS. Метка не мо­жет включать в себя разделители (пробелы, точки с запятой или знаки равенства). GOTO использует пер­вые 8 символов каждой метки.

Метка, заданная вами в команде GOTO, должна совпадать с меткой в командном файле (перед такой меткой указывается двоеточие). Если командный файл не содержит заданной метки, то его обработка пре­кращается, а MS-DOS выводит на экран сообщение:

Label not found

(Метка не найдена)

GOTO часто используется с командой IF для выполнения перехода по условию. См. пример в описании команды IF.

Команда IF

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

IF [NOT] ERRORLEVEL число команда

IF [NOT] строка1==строка2 команда

IF [NOT] EXIST имя_файла команда

Параметр NOT определяет, что MS-DOS должна выполнять команду только в случае ложного значе­ния условия. "ERRORLEVEL число" определяет истинное условие только если предыдущая выполняе­мая COMMAND.COM программа возвращает код выхода, больший или равный заданному числу.

"Команда" задает команду, выполняемую MS-DOS при удовлетворении условия. "Строка1==строка2" определяет истинное условие только при совпадении указанных строк. Строки мо­гут быть лите-ральными или представлять собой переменные (например, %1). Кавычки для литеральных строк не требуются.

EXIST имя_файла задает истинное условие, если указанный файл существует.

Здесь, если код выхода выполненной ранее программы отличен от 1, то выполняются операторы, сле­дующие за меткой A. В противном случае выполняется группа операторов за строкой if.

Команда PAUSE

Приостанавливает обработку командного файла и выводит сообщение с подсказкой пользователю вида

Press any key to continue . . .

(Для продолжения нажмите любую клавишу)

Эта команда используется только в командных файлах и имеет синтаксис:

PAUSE

Если при выполнении командного файла вы нажмете клавиши CTRL+C, MS-DOS выведет на экран сообщение:

Terminate batch job (Y/N)?

(Прервать командный файл (Да/Нет)?)

При нажатии Y обработка командного файла завершается, и управление возвращается операционной системе. Таким образом, вы можете включить команду PAUSE перед той частью командного файла, кото­рую может потребоваться исключить из выполнения. Когда PAUSE приостановит обработку командного файла, вы можете для его завершения нажать CTRL+C.

Команда REM

Позволяет вам включать в командный файл или в файл CONFIG.SYS комментарии. Команду REM полезно использовать для временного запрещения команд. (В CONFIG.SYS вместо REM можно ис­пользовать точку с запятой.)

REM [строка]

Параметр "строка" задает любую строку символов (в комментарии командного файла нельзя указы­вать символы <, > и |).

Команда REM не выводит на экран сообщений (см. описание команды ECHO). Чтобы вывести ком­ментарии на экран, включите в CONFIG.SYS или командный файл команду ECHO ON.

Команда SHIFT

Изменяет позицию параметров в командном файле.

SHIFT

Команда SHIFT изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, %2 - в %1 и т.д. Это полезно для написания команд­ного файла, выполняющего с любым числом параметров одну и ту же операцию. С помощью SHIFT вы можете также построить командный файл, воспринимающий более 10 параметров: те параметры, которые задаются после десятого (%9), будут сдвигаться по одному в %9.

Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT вы не сможете восстановить первый параметр (%0), который был перед сдвигом.

Приведем в качестве примера командный файл DIRCOP.BAT, который копирует список файлов в за­данный каталог. В качестве параметра задаются имя каталога и любое число файлов.

Наши рекомендации