COMMAND.COM
Из Википедии, свободной энциклопедии
COMMAND.COM — интерпретатор командной строки в операционных системах DOS, OS/2, семейства Windows 9x и ряда других. Загружается при старте системы или VDM (если не указан другой интерпретатор с помощью директивы SHELL= в файле CONFIG.SYS) и выполняет команды из файла AUTOEXEC.BAT.[1]
COMMAND.COM | |
---|---|
![]() | |
Тип | Командный интерпретатор |
Разработчики | Seattle Computer Products, Microsoft, IBM, Novell и др. |
Операционные системы | DOS (MS-DOS, DR-DOS, FreeDOS и т. д.), OS/2, Windows 9x и др. |
Языки интерфейса | Многоязычный |
В операционных системах семейства 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
.
Примечания
Ссылки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.