Командная строка по умолчанию для MS-DOS и Windows 9x
COMMAND.COM — это интерпретатор командной строки по умолчанию для MS-DOS , Windows 95 , Windows 98 и Windows Me . В случае DOS это также пользовательский интерфейс по умолчанию. Он играет дополнительную роль в качестве обычной первой программы, запускаемой после загрузки ( процесс init ). Как оболочка, COMMAND.COM имеет два различных режима работы: интерактивный режим и пакетный режим . Внутренние команды — это команды, хранящиеся непосредственно внутри двоичного файла COMMAND.COM ; таким образом, они всегда доступны, но могут быть выполнены только напрямую из интерпретатора команд.
COMMAND.COM — это программа DOS. Программы, запускаемые из COMMAND.COM, являются программами DOS, которые используют API DOS для взаимодействия с дисковой операционной системой. Совместимый командный процессор под FreeDOS иногда также называется FreeCom .
Режимы работы
Как оболочка, COMMAND.COM имеет два различных режима работы. Первый — интерактивный режим , в котором пользователь вводит команды, которые затем немедленно выполняются. Второй — пакетный режим , в котором выполняется предопределенная последовательность команд, сохраненная в виде текстового файла с расширением .BAT .
Внутренние команды
Внутренние команды — это команды, хранящиеся непосредственно внутри двоичного файла COMMAND.COM. Таким образом, они всегда доступны, но могут быть выполнены только непосредственно из интерпретатора команд.
Все команды выполняются после ↵ Enterнажатия клавиши в конце строки. COMMAND.COM не чувствителен к регистру, то есть команды можно вводить в любой комбинации верхнего и нижнего регистра.
Копирует один файл в другой (если целевой файл уже существует, MS-DOS спрашивает, следует ли заменить его). (См. также XCOPY , внешнюю команду, которая также может копировать деревья каталогов).
CTTY
Определяет устройство, используемое для ввода и вывода.
Удаляет файл. При использовании в каталоге удаляет все файлы только внутри каталога. Для сравнения, внешняя команда DELTREE удаляет все подкаталоги и файлы внутри каталога, а также сам каталог.
ДИР
Выводит список файлов в указанном каталоге.
ЭХО
Переключает отображение текста ( ECHO ON) или его отсутствие ( ECHO OFF). Также отображает текст на экране ( ECHO text).
Заменяет каждый из параметров замены на последующий (например , %0на , на и т. д.).%1%1%2
Команда ЕСЛИ
При выходе все внешние команды отправляют код возврата (значение от 0 до 255) вызывающей программе. Большинство программ имеют определенное соглашение для своих кодов возврата (например, 0 для успешного выполнения). [6] [7] [8] [9]
Если программа была вызвана COMMAND.COM, внутренняя команда IF с ее условным выражением ERRORLEVEL может использоваться для проверки условий ошибки последней вызванной внешней программы. [ необходима ссылка ]
В COMMAND.COM внутренние команды не устанавливают новое значение. [ необходима цитата ]
Переменные
Пакетные файлы для COMMAND.COM могут иметь четыре вида переменных:
Переменные окружения : они имеют форму %VARIABLE% и связаны со значениями с помощью оператора SET. До DOS 3 COMMAND.COM будет расширять переменные окружения только в пакетном режиме; то есть не интерактивно в командной строке. [ необходима цитата ]
Параметры замены : имеют вид %0 , %1 ... %9 и изначально содержат имя команды и первые девять параметров командной строки, переданных скрипту (например, если вызывающая команда была , то %0 — это "myscript.bat", %1 — это "John", а %2 — это "Doe"). Параметры справа от девятого могут быть отображены в диапазон с помощью оператора SHIFT. [ необходима цитата ]myscript.bat John Doe
Переменные цикла: используются в циклах, имеют формат %%a при запуске в пакетных файлах. Эти переменные определяются исключительно в рамках конкретного оператора FOR и перебирают определенный набор значений, определенных в этом операторе FOR. [ необходима цитата ]
Перенаправить стандартный вывод , перезаписав целевой файл, если он существует.
command >> filename
Перенаправить стандартный вывод , добавив его в целевой файл, если он существует.
command1 | command2
Направить стандартный вывод команды1 на стандартный ввод команды2
command1 ¶ command2
Команды, разделенные ASCII-20 (¶, вызываемые + ), выполняются последовательно (цепочка команд). [4] Другими словами, сначала command1 выполняется до завершения, затем command2 . [4] Это недокументированная функция в COMMAND.COM MS-DOS / PC DOS 5.0 и выше. [4] Она также поддерживается COMMAND.COM семейства Windows NT, а также DR-DOS 7.07. Все версии DR-DOS COMMAND.COM уже поддерживали похожую внутреннюю функцию, использующую вместо нее восклицательный знак (!) (функция, изначально полученная из Concurrent DOS и Multiuser DOS ) - в однопользовательской строке эта функция была доступна только внутренне (во встроенных сценариях запуска, таких как "!DATE!TIME") и косвенно через параметр $T DOSKEY , чтобы избежать проблем с ! как допустимым символом имени файла. [4] 4DOS поддерживает настраиваемый разделитель командной строки ( 4DOS.INI CommandSep= или SETDOS /C), который по умолчанию равен ^. [11] COMMAND.COM в новых версиях Windows NT также поддерживает разделитель для совместимости с синтаксисом cmd в OS/2 и семействе Windows NT. [11] (cmd не поддерживает разделитель ¶.)CtrlT&
Ограничения
Обычно длина командной строки в интерактивном режиме ограничена 126 символами. [12] [13] [14] В MS-DOS 6.22 длина командной строки в интерактивном режиме ограничена 127 символами. [ необходима цитата ]
В популярной культуре
Сообщение «Загрузка COMMAND.COM» можно увидеть на HUD- виде Терминатора и во внутреннем окне просмотра Робокопа , когда он перезагружается. [ необходима цитата ]
В детском анимационном сериале « Перезагрузка» , действие которого происходит внутри компьютеров, лидер системы (эквивалент города) называется COMMAND.COM. [ необходима цитата ]
^ Курт, Рюдигер; Гросс, Мартин; Голод, Генри (29 ноября 2016 г.) [2007]. «Бетрибссистем ДКП». www.robotrontechnik.de (на немецком языке). Архивировано из оригинала 3 апреля 2019 г. Проверено 28 апреля 2019 г.
^ abcdefgh Пол, Матиас Р. (30 июля 1997 г.) [1 мая 1994 г.]. NWDOS-TIPs — советы и подсказки для Novell DOS 7, с просмотром недокументированных подробностей, ошибок и обходных путей. Выпуск 157 (на немецком языке) (3-е изд.). Архивировано из оригинала 4 ноября 2016 г. Проверено 6 августа 2014 г.{{cite book}}: |work=игнорируется ( помощь ) (Примечание. Приведенная ссылка указывает на преобразованную в HTML версию NWDOSTIP.TXT, которая является частью коллекции MPDOSTIP.ZIP.) [1]
^ ab "Глава 7: Пакетная обработка". Руководство пользователя Caldera DR-DOS 7.02 . Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинала 2017-09-11 . Получено 2017-09-11 .
^ Пол, Матиас Р. (1 мая 1997 г.) [01 октября 1993 г.]. BATTIPs — Советы и рекомендации по программированию пакетных заданий (на немецком языке). Глава 7: ОШИБКА abfragen. Архивировано из оригинала 23 августа 2017 г. Проверено 23 августа 2017 г.{{cite book}}: |work=игнорируется ( помощь ) (Примечание. BATTIPS.TXT является частью MPDOSTIP.ZIP. Приведенная ссылка указывает на более старую версию файла BATTIPS.TXT, преобразованную в HTML.) [2]
^ Руководство пользователя Caldera DR-DOS 7.02. Caldera, Inc. 1998 [1993, 1997]. Архивировано из оригинала 2016-11-04 . Получено 2013-08-10 .
^ абв
[...] Несколько команд: Вы можете ввести несколько команд в одной командной строке, разделив их символом вставки [^]. Например, если вы знаете, что хотите скопировать все файлы .TXT на диск A:, а затем запустить CHKDSK, чтобы убедиться, что файловая структура диска A в хорошем состоянии, вы можете ввести следующую команду: Вы можете поместить столько команд в командную строку, сколько захотите, при условии, что общая длина командной строки не превышает 511 символов. Вы можете использовать несколько команд в псевдонимах и пакетных файлах, а также в командной строке. Если вам не нравится разделитель команд по умолчанию, вы можете выбрать другой символ с помощью команды или директивы CommandSep в 4DOS.INI . [...] (Составной символ) Этот параметр задает символ, используемый для разделения нескольких команд в одной строке. По умолчанию используется символ вставки [^]. Вы не можете использовать символы перенаправления [<>|], а также пробел, табуляцию, запятую или знак равенства в качестве разделителя команд. Разделитель команд сохраняется SETLOCAL и восстанавливается ENDLOCAL. В этом примере разделитель меняется на тильду [~]: (Можно указать либо сам символ, либо его код ASCII в виде десятичного числа, либо шестнадцатеричное число с предшествующим 0x.) [...] CommandSep = c (^): Этот символ используется для разделения нескольких команд в одной строке. [...] Совместимость специальных символов: Если вы используете два или более наших продуктов или хотите поделиться псевдонимами и пакетными файлами с пользователями других продуктов, вам необходимо знать о различиях в трех важных символах: разделителе команд [...], символе Escape [...] и символе параметра [...]. Значения по умолчанию для каждого из этих символов в каждом продукте показаны в следующей таблице: [...] Продукт, Разделитель, Параметр Escape [...] 4DOS: ^, ↑, & [...] 4OS2, 4NT, Команда Take: &, ^, $ [...] (Стрелка вверх [↑] представляет символ ASCII Ctrl-X, числовое значение 24.) [...]C:\>COPY *.TXT A: ^ CHKDSK A:SETDOS /CSETDOS /C:C:\>SETDOS /C~
^ Пол, Матиас Р. (1 июля 1997 г.) [1 января 1994 г.]. MSDOSTIPs — Советы по работе с MS-DOS 5.0-7 (на немецком языке). Архивировано из оригинала 22 августа 2017 г. Проверено 25 октября 2013 г.{{cite book}}: |work=игнорируется ( помощь ) (Примечание. MSDOSTIP.TXT является частью MPDOSTIP.ZIP, который поддерживался до 2001 года и распространялся на многих сайтах в то время. Приведенная ссылка указывает на более старую версию файла MSDOSTIP.TXT, преобразованную в HTML.) [4]
^ Пол, Матиас Р. (1 мая 1997 г.) [1 марта 1995 г.]. «Подсказки по JPSofts 4DOS 5.5b/c, 5.51, 5.52a и NDOS». МПДОСТИП (на немецком языке). Архивировано из оригинала 4 ноября 2016 г. Проверено 8 мая 2015 г.(Примечание. Приведенная ссылка указывает на HTML-конвертированную версию файла 4DOS5TIP.TXT, которая является частью коллекции MPDOSTIP.ZIP.) [5]
^ Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михельс, Рэймонд Дж.; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: руководство программиста по зарезервированным функциям и структурам данных MS-DOS — расширено для включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Reading, Массачусетс, США: Addison Wesley . стр. 623, 626. ISBN0-201-63287-X.(xviii+856+vi страниц, 3,5-дюймовая дискета) Опечатки: [6] [7]
Дальнейшее чтение
[...] все версии MS-DOS до Windows 95 [...] использовали файл COMMAND.COM в стиле COM, который имеет специальную сигнатуру в начале файла [...] запрашиваемый MS-DOS BIOS перед загрузкой оболочки, но не DR-DOS BIOS [...] COMMAND.COM [...] проверял, что он работает в "правильной" версии DOS, поэтому если бы вы загрузили их COMMAND.COM под DR-DOS, вы бы получили сообщение об ошибке "Bad version" и их COMMAND.COM завершился бы, поэтому DR-DOS [...] отобразил бы сообщение об ошибке "Bad or missing command interpreter" (если DR-DOS пытался загрузить командный процессор SHELL= после завершения обработки CONFIG.SYS). В этом случае вы могли бы ввести путь к допустимому DR-DOS COMMAND.COM (C:\DRDOS\COMMAND.COM), и все было бы в порядке. Теперь, все изменилось с тех пор, как MS-DOS 7.0 [...] COMMAND.COM внутренне стал файлом в стиле EXE, поэтому нет никакой волшебной [...] сигнатуры [...] для проверки [...] таким образом, DR-DOS не может исключить несовместимый COMMAND.COM. Кроме того, их COMMAND.COM больше не проверяет версию, но [...] не работает под DR-DOS [...] просто вылетает [...] PC DOS COMMAND.COM отлично работает под DR-DOS [...]
Пол, Маттиас Р. (17.06.2004). "Re: Случайные блокировки с DR-DOS 7.03". Конференция FidoNet : ALT_DOS . Архивировано из оригинала 28.04.2019 . Получено 28.04.2019 .
Купер, Джим (2001). Специальное издание с использованием MS-DOS 6.22 (3-е изд.). Que Publishing . ISBN 978-0-78972573-8.
Wolverton, Van (1990). Команды MS-DOS: Microsoft Quick Reference (4-е пересмотренное издание). Microsoft Press . ISBN 978-1-55615289-4.