COMMAND.COM
| COMMAND.COM | |
|---|---|
| Тип | Командный интерпретатор |
| Разработчики | Seattle Computer Products,Microsoft,IBM,Novell и др. |
| Операционные системы | DOS (MS-DOS,DR-DOS,FreeDOS и т. д.),OS/2,Windows 9x и др. |
| Языки интерфейса | Многоязычный |
COMMAND.COM —интерпретатор командной строки в операционных системахDOS,OS/2, семействаWindows 9x и ряда других. Загружается при старте системы илиVDM (если не указан другой интерпретатор с помощью директивыSHELL= в файлеCONFIG.SYS) и выполняет команды из файлаAUTOEXEC.BAT.[1]
В операционных системах семействаWindows NT (начиная сWindows NT 3.1 и заканчиваяWindows 11 /Windows Server 2012) иOS/2 интерпретатором командной строки является программаcmd.exe. Однако, для совместимости с DOS-приложениями,COMMAND.COM присутствует и в версиях этих систем для процессоров архитектурыIA-32.
Режимы работы
[править |править код]COMMAND.COM имеет два режима работы. Первый режим —интерактивный, когда пользователь вводит с клавиатуры команды, которые немедленно выполняются. Второй режим —пакетный, когдаCOMMAND.COM выполняет последовательность команд, заранее сохранённую впакетном файле срасширением.BAT. ФункцииCOMMAND.COM аналогичны функциям командных интерпретаторовUnix-совместимых операционных систем (например,bash), с тем отличием, чтоCOMMAND.COM имеет более ограниченный набор возможностей.[2][3]
Команды
[править |править код]КомандыCOMMAND.COM делятся на внутренние, и внешние. Внутренние команды поддерживаются самимCOMMAND.COM, внешние команды являются файлами, которые хранятся на дисках и имеютрасширение.COM,.EXE или.BAT.[4][5]
Часть внутренних команд используются в пакетных файлах для их оформления, организации их работы и для управления последовательностью выполнения прочих команд. Среди них:
- :имя_метки
- Задание имени метки для команды
GOTO. Часто используется и в качестве комментария. - FOR
- Повтор некоторой команды для каждого файла из заданного списка.
- GOTO
- Переход к метке внутри пакетного файла.
- REM
- Комментарий: любой текст в строке после этой команды игнорируется.
- IF
- Задание условия, в зависимости от которого происходит выполнение разных команд.
- CALL
- Приостановка выполнения текущего командного файла, запуск другого, по окончании работы вызванного файла возобновление выполнения текущего файла.[6]
- START
- Запуск исполняемого или командного файла, указанного в параметре этой команды, без ожидания завершения его выполнения (только под Windows).
Переменные
[править |править код]Пакетные файлы дляCOMMAND.COM имеют четыре типа переменных:
- ERRORLEVEL содержит код возврата последней из запущенных программ (к примеру, в языке программированияСи код можно вернуть с помощью
returnв функцииmain).[7][8] Как правило,ERRORLEVEL используется для индикации ошибок при работе программы и код 0 означает успешное завершение. Но это относится в основном к утилитам командной строки (которые ориентированы на использование в пакетных файлах), прикладные программы обычно не заботятся о возврате конкретных значений, поэтому после них вERRORLEVEL всегда оказывается нулевое значение или даже мусор.[9][10] В оригинальномCOMMAND.COM код возврата можно было проверить только с помощью конструкцииIF ERRORLEVEL[11], однако в некоторых клонах DOS, а также Windows семейства NT, добавлена возможность обращения кERRORLEVEL как к обычной переменной.[12][13] - Переменные могут быть заданы с помощью команды
SET.[14] Чтобы получить их значение, нужно имя переменной окружить знаками% (например,%path%), в этом случае в месте использования такой конструкции будет подставлено значение переменной.[15] Некоторые из этих переменных стандартизованы (PROMPT,PATH,TEMP и т. п.), некоторые задаются системой (CONFIG), остальные задаются и используются пользователями. Хранятся эти переменные в «окружении» (environment) и называются «переменными окружения».[16] - Аргументы пакетных файлов в самих пакетных файлах доступны как%1…%9.[17] Переменная%0 содержит текст команды (без аргументов), использованной для запуска пакетного файла.[18]
- Переменные для команды
FORимеют вид%%a и используются в пакетных файлах совместно с этой командой.[18]
Параметры командной строки
[править |править код]COMMAND.COM может быть запущена не только в ходе начальной загрузки, но и, подобно любому исполняемому файлу MS-DOS, другой программой с помощью стандартной функции MS-DOS EXEC (функция 4bH прерывания 21H). При запуске без параметров запускается экземпляр интерпретатора, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя командуEXIT. Но намного чаще используется запуск COMMAND.COM из других программ с параметрами /C и (реже) /K.
Параметр /C
[править |править код]Параметр /C предназначен для запуска в пакетном режиме. Синтаксис запуска:COMMAND.COM /CкомандаКомандой может быть любая внутренняя или внешняя команда COMMAND.COM, в том числе BAT-файл. После исполнения команды работа COMMAND.COM завершается и управление возвращается породившей его программе.
Параметр /K
[править |править код]Параметр /K полностью аналогичен параметру /C с той разницей, что после исполнения команды экземпляр интерпретатора не завершается, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя командуEXIT.
Примечания
[править |править код]- ↑Q95554: Not Using the /P Switch with the SHELL Command (англ.). Microsoft (18 января 2007). — См.: Background Information on SHELL and /P. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑5.2 Command Execution (англ.). GNU Make Manual. Delorie (июнь 2003). — «The stock shell, `command.com', is ridiculously limited in its functionality and many users of make tend to install a replacement shell». Дата обращения: 16 января 2010. Архивировано 19 июля 2008 года.
- ↑«batch files are much more limited than their UNIX counterparts» //Colin Ritchie. User Interface // Operating systems incorporating UNIX and Windows. — 4-е изд. — Cengage Learning EMEA, 2003. — P. 41. — 279 p. —ISBN 0-82-646416-5,ISBN 978-0-8264-6416-3.. — «batch files are much more limited than their UNIX counterparts».
- ↑Q71986: MS-DOS 5.0 Internal and External Commands (англ.). Microsoft (3 декабря 1999). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Batch Commands (англ.). TechNet Library → MS-DOS. Microsoft. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Если вызвать из пакетного файла другой пакетный файл напрямую, без помощи команды
CALL, то возврата из вызванного пакетного файла не будет, он заменит первый пакетный файл. - ↑Q57658: Setting the MS-DOS Errorlevel in a Program (англ.). Microsoft (12 мая 2003). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Main() Return Values (C# Programming Guide) (англ.). Microsoft (июль 2009). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Q81819: Exit Codes or Errorlevels Set by MS-DOS Commands (англ.). Microsoft (16 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Q41533: Basic 7.00 Can Return Exit Code (Error Level) to Batch File (англ.). Microsoft (21 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Q69576: Testing for a Specific Error Level in Batch Files (англ.). Microsoft (16 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Using System Information (англ.). Caldera DR-DOS 7.03 User Guide → Chapter 7 Batch Processing. Caldera (1998). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑If (англ.). Windows XP Professional Product Documentation. Microsoft. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Set (англ.). TechNet Library → MS-DOS. Microsoft. — Описание команды SET. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Q41246: How to Use Environment Variable Substitution in Batch Files (англ.). Microsoft (10 мая 2003). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Q69846: DOS Environment Table Description; Basic’s ENVIRON Statement (англ.). Microsoft (16 августа 2005). — Технические детали реализации окружения. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑Shift (англ.). TechNet Library → MS-DOS. Microsoft. — Описание команды SHIFT. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
- ↑12Q75634: Percent Signs Stripped from Batch File Text (англ.). Microsoft (10 мая 2003). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
Ссылки
[править |править код]- Урок bat-аники RSDN
- MDGx / AXCEL216. COMMAND.COM (англ.). Windows 95/98/NT4/2000/ME/XP/2003 + DOS 7.xx/8.00 Tricks + Secrets Files. — Список всех опций COMMAND.COM, включая недокументированные. Дата обращения: 16 января 2010.
- В.Э.Фигурнов. Часть 3. Основы работы в среде MS DOS // IBM PC для пользователя. —М.: Инфра-М, 1999. —ISBN 5-86225-471-4.