PIE Commander
- 1 year ago
- 0
- 0
COMMAND.COM — интерпретатор командной строки в операционных системах DOS , OS/2 , семейства Windows 9x и ряда других. Загружается при старте системы или VDM (если не указан другой интерпретатор с помощью директивы SHELL= в файле CONFIG.SYS ) и выполняет команды из файла AUTOEXEC.BAT .
В операционных системах семейства 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 имеет более ограниченный набор возможностей.
Команды COMMAND.COM делятся на внутренние, и внешние. Внутренние команды поддерживаются самим COMMAND.COM , внешние команды являются файлами, которые хранятся на дисках и имеют расширение .COM , .EXE или .BAT .
Часть внутренних команд используются в пакетных файлах для их оформления, организации их работы и для управления последовательностью выполнения прочих команд. Среди них:
GOTO
. Часто используется и в качестве комментария.
Пакетные файлы для COMMAND.COM имеют четыре типа переменных:
return
в функции
main
).
Как правило,
ERRORLEVEL
используется для индикации ошибок при работе программы и код 0 означает успешное завершение. Но это относится в основном к утилитам командной строки (которые ориентированы на использование в пакетных файлах), прикладные программы обычно не заботятся о возврате конкретных значений, поэтому после них в
ERRORLEVEL
всегда оказывается нулевое значение или даже мусор.
В оригинальном
COMMAND.COM
код возврата можно было проверить только с помощью конструкции
IF ERRORLEVEL
, однако в некоторых клонах DOS, а также Windows семейства NT, добавлена возможность обращения к
ERRORLEVEL
как к обычной переменной.
SET
.
Чтобы получить их значение, нужно имя переменной окружить знаками
%
(например,
%path%
), в этом случае в месте использования такой конструкции будет подставлено значение переменной.
Некоторые из этих переменных стандартизованы (
PROMPT
,
PATH
,
TEMP
и т. п.), некоторые задаются системой (
CONFIG
), остальные задаются и используются пользователями. Хранятся эти переменные в «окружении» (environment) и называются «переменными окружения».
FOR
имеют вид
%%a
и используются в пакетных файлах совместно с этой командой.
COMMAND.COM может быть запущена не только в ходе начальной загрузки, но и, подобно любому исполняемому файлу MS-DOS, другой программой с помощью стандартной функции MS-DOS EXEC (функция 4bH прерывания 21H). При запуске без параметров запускается экземпляр интерпретатора, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя команду
EXIT
. Но намного чаще используется запуск COMMAND.COM из других программ с параметрами /C и (реже) /K.
Параметр /C предназначен для запуска в пакетном режиме. Синтаксис запуска:
COMMAND.COM /C
команда
Командой может быть любая внутренняя или внешняя команда COMMAND.COM, в том числе BAT-файл. После исполнения команды работа COMMAND.COM завершается и управление возвращается породившей его программе.
Параметр /K полностью аналогичен параметру /C с той разницей, что после исполнения команды экземпляр интерпретатора не завершается, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя команду
EXIT
.
CALL
, то возврата из вызванного пакетного файла не будет, он заменит первый пакетный файл.