soft :: win

Консольные команды Windows NT


Консольные команды Windows NT Изначально многие пользователи NT не пользуются теми возможностями, которые предоставляют команды консоли, либо используют их не полностью.

В этом материале я хотел бы описать основные моменты работы с консолью. Для чего, вы спросите, это нужно? Знание основных команд позволяет автоматизировать работу, используя их в командных файлах, ну а при работе с сетью многие из них незаменимы. Все изложенное будет относиться в основном к Windows XP, но вполне может быть применимо к другим версиям NT (4, 2000), правда, уже с некоторыми ограничениями.
В основе 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] команда]
/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) — Разрешение/запрет отложенного расширения переменных среды с применением символа '!' в качестве разделителя. Например, /V:ON разрешает использовать !var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит к совсем другим результатам внутри цикла FOR.
Параметр COLOR. Атрибуты цветов задаются в виде ДВУХ шестнадцатеричных цифр — первая задает цвет фона, а вторая определяет цвет текста. Каждая цифра может иметь следующие значения: 0=черный, 1=синий, 2=зеленый, 3=голубой, 4=красный, 5=лиловый, 6=желтый, 7=белый, 8=серый, 9=светло-синий, А=светло-зеленый, В=светло-голубой, C=светло-красный, D=светло-лиловый, E=светло-желтый, F=ярко-белый.
Если аргумент не указан, команда восстанавливает исходный выбор цветов, каким он был на момент запуска 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\Software\Microsoft\Command Processor\AutoRun
и/или
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
и если одна из них или обе они присутствуют, то сначала выполняются они.
По умолчанию расширенная обработка команд включена. Чтобы запретить расширенную обработку для конкретного вызова, используется ключ /E:OFF.
Можно включить или отключить расширенную обработку команд для всех вызовов CMD.EXE на данном компьютере или для данного пользователя, с помощью REGEDT32.EXE задав значения REG_DWORD в системном реестре для разделов:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions
и/или
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions,
равными 0x1 или 0x0. Параметры пользователя перекрывают параметры компьютера.
Ключи командной строки, в свою очередь, перекрывают параметры реестра.
Отложенное расширение переменных среды по умолчанию не включено. Его можно включить или отключить для конкретного вызова CMD.EXE с помощью ключей /V:ON или /V:OFF, или же с помощью REGEDT32.EXE задав значения REG_DWORD в системном реестре для разделов:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
и/или
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion
равными 0x1 или 0x0. Параметры пользователя, как уже говорилось выше, перекрывают параметры компьютера, также и ключи командной строки, в свою очередь, перекрывают параметры реестра.
Если отложенное расширение переменных среды включено, то символ '!' (восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения.
Включение/выключение отложенного расширения переменных среды для всех вызовов CMD.EXE на данном компьютере или для данного пользователя возможно с помощью REGEDT32.EXE при значении REG_DWORD в системном реестре для следующих разделов:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar,
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar
и/или
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar,
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar,
установив их шестнадцатеричные значения равными коду управляющего символа, используемого для конкретной функции (например, 0x4 для Ctrl-D или 0x6 для Ctrl-F). Опять же, параметры пользователя перекрывают параметры компьютера; ключи командной строки, в свою очередь, перекрывают параметры реестра.
Завершение имен файлов и папок также не включено по умолчанию. Это можно исправить с помощью ключей /F:ON или /F:OFF.
Если завершение включено с помощью ключа командной строки /F:ON, то используются два управляющих символа: Ctrl-D для имен папок и Ctrl-F для имен файлов. Чтобы отключить конкретный символ завершения в системном реестре, в качестве кода специального символа используется шестнадцатеричное значение символа пробела (0x20).
Завершение вызывается при вводе одного из этих двух специальных символов. Функция завершения берет строку пути слева от точки ввода, дописывает к ней символ шаблона, если таковой отсутствует, а затем строит список путей, которые соответствуют полученному определению. После этого выводится первый элемент этого списка соответствующих путей. Если же список пуст, то подается звуковой сигнал и ничего не выводится.
После этого повторный ввод того же самого специального символа приводит к циклическому перебору всех соответствующих путей. Нажатие клавиши <Shift> при вводе управляющего символа позволяет просматривать список путей в обратном порядке. Если изменить выведенный путь, а затем снова ввести управляющий символ, сохраненный список очищается и строится новый список путей. То же самое происходит, если переключиться с одного символа завершения на другой. Единственное отличие при использовании символа завершения файла состоит в том, что при этом для построения списка соответствия берется и путь, и имя файла, а при использовании символа завершения папки — только путь. Если символ завершения используется в одной из встроенных команд манипулирования папками (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 — Номер версии Windows XP;
$_ — Возврат каретки и перевод строки;
$$ — $ (символ доллара).
Когда расширенная обработка команд включена, то команда PROMPT поддерживает следующие дополнительные символы форматирования:
$+ — отображение нужного числа знаков плюс (+) в зависимости от текущей глубины стека каталогов PUSHD, по одному знаку на каждый сохраненный путь;
$M — отображение полного имени удаленного диска, связанного с именем текущего диска, или пустой строки, если текущий диск не является сетевым. Например, если диск E: подключен к сетевому ресурсу \\Server\Programs, то при команде PROMT $M$P$G формат приглашения командной строки будет следующий: \\Server\Programs E:\> .

FM, fm@tut.by
Продолжение следует



© компьютерная газета