cmd.exe взаимодействует с пользователем через интерфейс командной строки . В Windows этот интерфейс реализован через консоль Win32 . cmd.exe может использовать возможности, доступные собственным программам его собственной платформы. Например, в OS/2 и Windows он может использовать реальные каналы в командных конвейерах, позволяя обеим сторонам конвейера работать одновременно. В результате можно перенаправить стандартный поток ошибок . ( COMMAND.COM использует временные файлы и запускает две стороны последовательно, одну за другой.)
Несколько команд можно обрабатывать в одной командной строке, используя разделитель команд && . [8]
При использовании этого разделителя в cmd.exe Windows каждая команда должна быть выполнена успешно для выполнения следующих команд. Например:
C:\> CommandA && CommandB && CommandC
В приведенном выше примере CommandB будет выполнена только в случае успешного завершения CommandA , а выполнение CommandC зависит от успешного завершения CommandB . Для обработки последующих команд, даже если предыдущая команда выдает ошибку, следует использовать разделитель команд & . [9] Например:
C:\> CommandA , CommandB и CommandC
В Windows XP или более поздней версии максимальная длина строки, которую можно использовать в командной строке, составляет 8191 (2 13 -1) символ. В более ранних версиях, таких как Windows 2000 или Windows NT 4.0 , максимальная длина строки составляет 2047 (2 11 -1) символов. Это ограничение включает командную строку, отдельные переменные среды , которые наследуются другими процессами , и все расширения переменных среды. [10]
В Windows cmd.exe в основном совместим с COMMAND.COM, но предоставляет следующие расширения для него:
Более подробные сообщения об ошибках, чем общее сообщение " Bad command or file name " (в случае неправильно сформированных команд) COMMAND.COM . В OS/2 сообщения об ошибках выводятся на выбранном языке системы, их текст берется из файлов системных сообщений. Затем можно выполнить команду HELP с номером сообщения об ошибке, чтобы получить дополнительную информацию.
Поддерживает использование клавиш со стрелками для прокрутки истории команд. (В DOS эта функция была доступна только в DR DOS (через HISTORY ) и позже через внешний компонент DOSKEY .)
Добавляет циклическое завершение командной строки для путей к файлам и папкам, где пользователь может циклически перебирать результаты для префикса, используя Tab ↹, и + для обратного направления.⇧ ShiftTab ↹
Обрабатывает символ вставки ( ^ ) как экранирующий символ ; следующий за ним символ следует понимать буквально. В cmd.exe и COMMAND.COM есть специальные символы , предназначенные для изменения поведения процессора командной строки. Символ вставки заставляет процессор командной строки интерпретировать их буквально.
Поддерживает отложенное расширение переменных с помощью SETLOCAL EnableDelayedExpansion, что позволяет вычислять значения переменных во время выполнения, а не во время анализа скрипта перед выполнением (Windows 2000 и более поздние версии), исправляя идиомы DOS, которые усложняли использование управляющих структур . [16] Расширения можно отключить, что обеспечивает более строгий режим совместимости.
Также были улучшены внутренние команды:
Команда DELTREE была объединена с командой RD как часть ее ключа /S .
Команды SetLocal и EndLocal ограничивают область изменений в среде. Изменения, внесенные в среду командной строки после команд SetLocal, являются локальными для пакетного файла . Команда EndLocal восстанавливает предыдущие настройки. [17]
Команда Call позволяет использовать подпрограммы внутри пакетного файла. Команда Call в COMMAND.COM поддерживает только вызов внешних пакетных файлов.
Расширение команды For поддерживает анализ файлов и произвольных наборов в дополнение к именам файлов.
Новые команды PushD и PopD обеспечивают доступ к пройденным путям, аналогично кнопкам «вперед» и «назад» в веб-браузере или проводнике .
Условная команда IF может выполнять сравнения без учета регистра и числовые сравнения равенства и неравенства в дополнение к сравнениям строк с учетом регистра. (Это было доступно в DR-DOS, но не в PC DOS или MS-DOS .)
^ "Заметки об использовании командного процессора OS/2 по умолчанию (CMD.EXE)". www.tavi.co.uk .
^ abc "reactos/reactos". GitHub . 4 декабря 2021 г.
^ "Command Processor Shell (Windows CE .NET 4.2)". Microsoft Docs . 30 июня 2006 г. Архивировано из оригинала 31 августа 2022 г.
^ "Command Processor Shell (Windows CE 5.0)". Microsoft Docs . 14 сентября 2012 г. Архивировано из оригинала 28 августа 2022 г.
^ "Command Processor Shell (Windows Embedded CE 6.0)". Microsoft Docs . 2012. Архивировано из оригинала 5 сентября 2022 г.
^ Закари, Г. Паскаль (1994). Шоустоп! Головокружительная гонка за создание Windows NT и следующего поколения в Microsoft . The Free Press . ISBN0-02-935671-7.
^ Дуглас Макконахи Болинг (2001). Программирование Microsoft Windows CE (2-е изд.). Microsoft Press . ISBN978-0735614437.
^ ab "cmd". Microsoft Learn . 12 сентября 2023 г. Архивировано из оригинала 21 ноября 2023 г.
^ "Перенаправление команд, каналы - Windows CMD - SS64.com". ss64.com . Получено 23 сентября 2021 г. .
^ Ограничение на строку командной строки командной строки (Cmd.exe)
^ Справочник пользователя Microsoft Operating System/2 (PDF) . Microsoft . 1987.