COMMAND.COM

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
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 имеют четыре типа переменных:

  1. ERRORLEVEL содержит код возврата последней из запущенных программ (к примеру, в языке программированияСи код можно вернуть с помощьюreturn в функцииmain).[7][8] Как правило,ERRORLEVEL используется для индикации ошибок при работе программы и код 0 означает успешное завершение. Но это относится в основном к утилитам командной строки (которые ориентированы на использование в пакетных файлах), прикладные программы обычно не заботятся о возврате конкретных значений, поэтому после них вERRORLEVEL всегда оказывается нулевое значение или даже мусор.[9][10] В оригинальномCOMMAND.COM код возврата можно было проверить только с помощью конструкцииIF ERRORLEVEL[11], однако в некоторых клонах DOS, а также Windows семейства NT, добавлена возможность обращения кERRORLEVEL как к обычной переменной.[12][13]
  2. Переменные могут быть заданы с помощью командыSET.[14] Чтобы получить их значение, нужно имя переменной окружить знаками% (например,%path%), в этом случае в месте использования такой конструкции будет подставлено значение переменной.[15] Некоторые из этих переменных стандартизованы (PROMPT,PATH,TEMP и т. п.), некоторые задаются системой (CONFIG), остальные задаются и используются пользователями. Хранятся эти переменные в «окружении» (environment) и называются «переменными окружения».[16]
  3. Аргументы пакетных файлов в самих пакетных файлах доступны как%1%9.[17] Переменная%0 содержит текст команды (без аргументов), использованной для запуска пакетного файла.[18]
  4. Переменные для команды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.

Примечания

[править |править код]
  1. Q95554: Not Using the /P Switch with the SHELL Command (англ.). Microsoft (18 января 2007). — См.: Background Information on SHELL and /P. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  2. 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 года.
  3. «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».
  4. Q71986: MS-DOS 5.0 Internal and External Commands (англ.). Microsoft (3 декабря 1999). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  5. Batch Commands (англ.). TechNet Library → MS-DOS. Microsoft. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  6. Если вызвать из пакетного файла другой пакетный файл напрямую, без помощи командыCALL, то возврата из вызванного пакетного файла не будет, он заменит первый пакетный файл.
  7. Q57658: Setting the MS-DOS Errorlevel in a Program (англ.). Microsoft (12 мая 2003). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  8. Main() Return Values (C# Programming Guide) (англ.). Microsoft (июль 2009). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  9. Q81819: Exit Codes or Errorlevels Set by MS-DOS Commands (англ.). Microsoft (16 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  10. Q41533: Basic 7.00 Can Return Exit Code (Error Level) to Batch File (англ.). Microsoft (21 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  11. Q69576: Testing for a Specific Error Level in Batch Files (англ.). Microsoft (16 ноября 2006). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  12. Using System Information (англ.). Caldera DR-DOS 7.03 User Guide → Chapter 7 Batch Processing. Caldera (1998). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  13. If (англ.). Windows XP Professional Product Documentation. Microsoft. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  14. Set (англ.). TechNet Library → MS-DOS. Microsoft. — Описание команды SET. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  15. Q41246: How to Use Environment Variable Substitution in Batch Files (англ.). Microsoft (10 мая 2003). Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  16. Q69846: DOS Environment Table Description; Basic’s ENVIRON Statement (англ.). Microsoft (16 августа 2005). — Технические детали реализации окружения. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  17. Shift (англ.). TechNet Library → MS-DOS. Microsoft. — Описание команды SHIFT. Дата обращения: 15 января 2010. Архивировано 14 февраля 2012 года.
  18. 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.
Перейти к шаблону «Системные файлы DOS»
Системные файлыDOS
Перейти к шаблону «Компоненты Microsoft Windows»
Основные
Службы
управления
Приложения
Win32
UWP/WASDK[англ.]
Исторические
Игры
Ядро ОС
Службы
Файловые
системы
Серверы
Архитектура
Безопасность
Совместимость
Перейти к шаблону «OS/2 API»
Компоненты иAPIOS/2
Основные
Службы
управления
Игры
Ядро ОС
Файловые системы
Графическая подсистема
Объектная модель
Совместимость
Источник —https://ru.wikipedia.org/w/index.php?title=COMMAND.COM&oldid=146203725
Категории:
Скрытые категории: