В основе NT лежат несколько другие принципы, чем в Win9x. Однако MS-DOS также присутствует, правда, только в качестве виртуальной машины (NT Virtual DOS Machine, NTVDM). Фактически это режим командной строки, с помощью которой вводятся и выполняются утилиты и пакетные файлы.
Доступ к командной строке можно получить через меню Пуск/Программы/Стандартные/Командная строка.
Основным интерпретатором командной строки в NT является cmd.exe, основным - это потому, что присутствует и стандартный интерпретатор команд MS-DOS - command.com.
Запустив cmd.exe (через меню либо Пуск/Выполнить/cmd.exe), получаем окно, в котором можно работать с командной строкой. Причем, находясь уже в открытом командном окне, можно запустить еще несколько версий cmd. Для завершения работы текущей версии можно воспользоваться командой EXIT.
Существует два режима работы cmd.exe - расширенный и стандартный. Расширенный режим работает со следующими командами: DEL или ERASE; COLOR; CD или CHDIR; MD или MKDIR; PROMPT; PUSHD; POPD; SET; SETLOCAL; ENDLOCAL; IF; FOR; CALL; SHIFT; GOTO; START (изменен также вызов внешних команд); ASSOC; FTYPE.
Команда CMD
Общий синтаксис команды:
Код: Выделить всё
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] команда]
Выполнение указанной команды без последующего завершения.
- /S - Изменение поведения после /C или /K (см. ниже).
/Q - Отключение режима вывода команд на экран (ECHO).
/D - Отключение выполнения команд AutoRun из реестра (см. ниже).
/A (/U) - Вывод результатов выполнения команд в формате ANSI/UNICODE.
/T:цв - Выбор цвета текста/фона (более подробно см. описание COLOR ниже).
/E:ON(/E:OFF) - Разрешение/запрет расширений команд (см. ниже).
/F:ON(/F:OFF) - Разрешение/запрет символов завершения имен файлов и папок (см. ниже).
/V:ON(/V:OFF) - Разрешение/запрет отложенного расширения переменных среды с применением символа '!' в качестве разделителя.
Если аргумент не указан, команда восстанавливает исходный выбор цветов, каким он был на момент запуска CMD.EXE. Это значение извлекается из текущего текстового окна, из значения ключа /T или из значения параметра реестра DefaultColor.
Команда COLOR возвращает значение кода ошибки ERRORLEVEL 1 при попытке вызова этой команды с совпадающими значениями цвета текста и цвета фона.
Пример: "COLOR fc" задает светло-красный текст на ярко-белом фоне.
Чтобы указать в одной строке несколько команд, следует разделить их символами '&&' и заключить в кавычки. Кроме того, из соображений совместимости, /X означает то же, что и /E:ON, /Y - то же, что и /E:OFF, и /R - то же, что и /C.
Все прочие ключи командной строки игнорируются.
Если указаны ключи /C или /K, то остальная часть командной строки после такого ключа обрабатывается как командная строка, а обработка символов кавычек (") ведется по следующим правилам:
1. Если выполняются все перечисленные ниже условия, то символы кавычек в командной строке сохраняются:
- ключ /S отсутствует;
- есть ровно два символа кавычек;
- между ними нет других специальных символов, как то: &()@^|;
- между ними имеются один или несколько пробелов;
- строка, заключенная в кавычки, является именем исполняемого файла.
2. В противном случае проверяется первый символ, и если он является символом кавычек, то он удаляется, также удаляется последний символ кавычек в командной строке, а весь текст после этого последнего символа кавычек сохраняется.
Если ключ /D не указан в командной строке, то при запуске CMD.EXE выполняется проверка значений переменных REG_SZ или REG_EXPAND_SZ для следующих разделов системного реестра:
HKEY_LOCAL_MACHINE SoftwareMicrosoft Command ProcessorAutoRun
и/или
HKEY_CURRENT_USERSoftware Microsoft Command ProcessorAutoRun
и если одна из них или обе они присутствуют, то сначала выполняются они.
По умолчанию расширенная обработка команд включена. Чтобы запретить расширенную обработку для конкретного вызова, используется ключ /E:OFF.
Можно включить или отключить расширенную обработку команд для всех вызовов CMD.EXE на данном компьютере или для данного пользователя, с помощью REGEDT32.EXE задав значения REG_DWORD в системном реестре для разделов:
HKEY_LOCAL_MACHINE SoftwareMicrosoft Command ProcessorEnableExtensions
и/или
HKEY_CURRENT_USERSoftware Microsoft Command ProcessorEnableExtensions,
равными 0x1 или 0x0. Параметры пользователя перекрывают параметры компьютера. Ключи командной строки, в свою очередь, перекрывают параметры реестра.
Отложенное расширение переменных среды по умолчанию не включено. Его можно включить или отключить для конкретного вызова CMD.EXE с помощью ключей /V:ON или /V:OFF, или же с помощью REGEDT32.EXE задав значения REG_DWORD в системном реестре для разделов:
HKEY_LOCAL_MACHINE SoftwareMicrosoft Command ProcessorDelayedExpansion
и/или
HKEY_CURRENT_USERSoftware Microsoft
Command ProcessorDelayedExpansion равными 0x1 или 0x0. Параметры пользователя, как уже говорилось выше, перекрывают параметры компьютера, также и ключи командной строки, в свою очередь, перекрывают параметры реестра. Если отложенное расширение переменных среды включено, то символ '!' (восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения. Включение/выключение отложенного расширения переменных среды для всех вызовов CMD.EXE на данном компьютере или для данного пользователя возможно с помощью REGEDT32.EXE при значении REG_DWORD в системном реестре для следующих разделов:
HKEY_LOCAL_MACHINE SoftwareMicrosoft Command ProcessorCompletionChar,
HKEY_LOCAL_MACHINE SoftwareMicrosoft Command ProcessorPathCompletionChar
и/или
HKEY_CURRENT_USERSoftware Microsoft Command ProcessorCompletionChar,
HKEY_CURRENT_USERSoftware Microsoft Command ProcessorPathCompletionChar, установив их шестнадцатеричные значения равными коду управляющего символа, используемого для конкретной функции (например, 0x4 для Ctrl-D или 0x6 для Ctrl-F). Опять же, параметры пользователя перекрывают параметры компьютера; ключи командной строки, в свою очередь, перекрывают параметры реестра.
Завершение имен файлов и папок также не включено по умолчанию. Это можно исправить с помощью ключей /F:ON или /F:OFF. Если завершение включено с помощью ключа командной строки /F:ON, то используются два управляющих символа: Ctrl-D для имен папок и Ctrl-F для имен файлов. Чтобы отключить конкретный символ завершения в системном реестре, в качестве кода специального символа используется шестнадцатеричное значение символа пробела (0x20).
Завершение вызывается при вводе одного из этих двух специальных символов.
Функция завершения берет строку пути слева от точки ввода, дописывает к ней символ шаблона, если таковой отсутствует, а затем строит список путей, которые соответствуют полученному определению. После этого выводится первый элемент этого списка соответствующих путей. Если же список пуст, то подается звуковой сигнал и ничего не выводится.
После этого повторный ввод того же самого специального символа приводит к циклическому перебору всех соответствующих путей. Hажатие клавиши при вводе управляющего символа позволяет просматривать список путей в обратном порядке. Если изменить выведенный путь, а затем снова ввести управляющий символ, сохраненный список очищается и строится новый список путей. То же самое происходит, если переключиться с одного символа завершения на другой.
Единственное отличие при использовании символа завершения файла состоит в том, что при этом для построения списка соответствия берется и путь, и имя файла, а при использовании символа завершения папки - только путь. Если символ завершения используется в одной из встроенных команд манипулирования папками (CD, MD или RD), то всегда подразумевается символ завершения папок.
Символ завершения правильно работает и с именами файлов, содержащими пробелы или иные специальные символы, если при этом строка соответствия заключена в кавычки. Кроме того, если сместить точку ввода влево, а затем использовать символ завершения внутри строки, оставшийся справа от точки ввода текст будет отброшен.
Специальные символы, которые требуют обязательного заключения в кавычки: &()[]{}^=;!'+,`~
Команда PROMT
Изменение приглашения командной строки cmd.exe.
PROMPT [текст], где текст - новое приглашение командной строки. Приглашение может включать обычные символы и следующие коды:
- $A - & (амперсанд);
$B - | (вертикальная черта);
$C - ( (левая круглая скобка);
$D - Текущая дата;
$E - ESC (символ ASCII с кодом 27);
$F - ) (правая круглая скобка);
$G - > (знак "больше");
$H - BACKSPACE (удаление предыдущего символа);
$L - $N - Текущий диск;
$P - Текущие диск и каталог;
$Q - = (знак равенства);
$S - (пробел);
$T - Текущее время;
$V - Hомер версии Windows XP;
$_ - Возврат каретки и перевод строки;
$$ - $ (символ доллара).
- $+ - отображение нужного числа знаков плюс (+) в зависимости от текущей глубины стека каталогов PUSHD, по одному знаку на каждый сохраненный путь;
$M - отображение полного имени удаленного диска, связанного с именем текущего диска, или пустой строки, если текущий диск не является сетевым. Hапример, если диск E: подключен к сетевому ресурсу ServerPrograms, то при команде PROMT $M$P$G формат приглашения командной строки будет следующий: ServerPrograms
E:>.