Синтаксис команды 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, который копирует список файлов в заданный каталог. В качестве параметра задаются имя каталога и любое число файлов.