Открылась Компьютерная Ярмарка Expo-com.ru на Тульской 
6000 кв.м, 20 000 покупателей в день.
Удачное расположение (м. "Тульская"), большой ассортимент, автостоянка, лифты, кафе, туалеты, телефонная связь, интернет. 
Арендаторам: 1 месяц бесплатно
Режим работы и проезд см. здесь >>
реклама у нас
***

 

Эффективная консоль

Автор: Сергей Трошин

Параметры командной строки интерпретатора cmd.exe и его эффективное использование.

В Windows XP имеется так называемая консоль - весьма полезная в ряде случаев программа cmd.exe. Хотелось бы для более эффективного ее использования узнать параметры ее командной строки.


В Windows XP командный интерпретатор cmd.exe при простом запуске, без указания параметров командной строки, отображает версию операционной системы, информацию о защите авторских прав разработчиков ОС и, собственно, саму командную строку, в которой можно ввести как параметр командной строки самой программы cmd.exe, так и любую внешнюю команду, например, команду на запуск другого приложения или стандартную команду, типа mkdir, del и т. п. В случае указания параметров командной строки вы, естественно, получаете некоторые дополнительные возможности. Синтаксис в данном случае таков:

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] команда]
Здесь команда, собственно, и задает исполняемую команду или программу. Можно использовать одновременно и несколько команд, используя между ними специальный разделитель - символы &&, при этом все сочетание нескольких команд должно быть заключено в кавычки, например, "команда&&команда&&команда".

Теперь почти в соответствии с официальной документацией Microsoft (я взял на себя смелость ее подредактировать, сделав немного более понятной для народа, если это в данном случае вообще возможно) попробую расшифровать значение каждого параметра:

/? - вызов справки (очень подробная, на основе ее, собственно, и написана эта статья);
/A - вывод результатов выполнения заданной команды в формате ANSI;
/C - выполнение заданной команды с последующим завершением (то есть закроется окно консоли);
/D - отключение выполнения команд AutoRun (которые первыми автоматически выполняются при вызове cmd.exe), заданных в специальных разделах реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun (в этом разделе задаются параметры, типа REG_SZ) и HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
(в этом разделе задаются параметры, типа REG_EXPAND_SZ);
/E:ON (/E:OFF) - разрешение (запрет) расширений команд. В Windows XP по умолчанию включена расширенная обработка всех команд cmd.exe, этот параметр служит для включения / выключения расширений конкретного процесса.

Полностью отключить или включить расширенную обработку на данном компьютере или для конкретного пользователя можно в реестре, в соответствующих нужному контексту разделах HKEY_LOCAL_
MACHINE\Software\Microsoft\Command Processor\ и HKEY_CURRENT_USER\Software\Micro-soft\Command Processor\.
Параметр "EnableExtensions"=dword:00000001 в этих разделах включает расширения, а "EnableExtensions"=dword:00000000 - отключает, при этом параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /E командного процессора имеет приоритет над параметрами реестра.

При расширенной обработке команд изменения и / или добавления затрагивают следующие команды: assoc, call, chdir (cd), color, del (erase), endlocal, for, ftype, goto, if, mkdir (md), popd, prompt, pushd, set, setlocal, shift, start (изменен также вызов внешних команд); /F:ON (/F:OFF) - разрешение (запрет) завершения имен файлов и папок (по умолчанию выключено) конкретного вызова cmd.exe. Довольно удобная функция, позволяющая не вводить полностью вручную в окне консоли пути к файлам или имена самих папок, а ввести только часть длинного пути и с помощью нажатия специальной комбинации клавиш дать операционной системе найти подходящие варианты и просто выбрать нужный.

Если необходимо включить или отключить завершение имен для всех вызовов cmd.exe, то в разделах реестра HKEY_LOCAL_MACHINE\Software\Microsoft\
Command Processor (для локальной машины), HKEY_CURRENT_USER\Software\Microsoft\Command Processor (для текущего пользователя) установите следующие параметры (приведены значения по умолчанию): 
"CompletionChar"=dword:00000040
"PathCompletionChar"=dword:00000040 таким образом, чтобы их шестнадцатеричные значения соответствовали коду управляющего символа, используемого для конкретной функции (например, 0 x 4 для Ctrl+D или 0 x 6 для Ctrl+F). Это позволяет сделать известная утилита, неоднократно упоминавшаяся и описанная в нашем журнале, TweakUI.

Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /F командного процессора имеет приоритет над параметрами реестра. 

Microsoft вносит некоторые разъяснения по поводу использования этой функции: "Если завершение включено с помощью ключа командной строки /F:ON, то используются два управляющих символа: Ctrl+D для имен папок и Ctrl+F для имен файлов. Чтобы отключить конкретный символ завершения в системном реестре, в качестве кода специального символа используется шестнадцатеричное значение символа пробела (0 x 20). Завершение вызывается при вводе одного из этих двух специальных символов. 

Функция завершения берет строку пути слева от точки ввода, дописывает к ней символ шаблона, если таковой отсутствует, а затем строит список путей, которые соответствуют полученному определению. После этого выводится первый элемент этого списка соответствующих путей. Если же список пуст, то подается звуковой сигнал, и ничего не выводится. После этого повторный ввод того же самого специального символа приводит к циклическому перебору всех соответствующих путей. 

Нажатие клавиши Shift при вводе управляющего символа позволяет просматривать список путей в обратном порядке. Если изменить выведенный путь, а затем снова ввести управляющий символ, сохраненный список очищается, и строится новый список путей. То же самое происходит, если переключиться с одного символа завершения на другой. Единственное отличие при использовании символа завершения файла состоит в том, что при этом для построения списка соответствия берется и путь, и имя файла, а при использовании символа завершения папки - только путь. 

Если символ завершения используется в одной из встроенных команд манипулирования папками (CD, MD или RD), то всегда подразумевается символ завершения папок. 

Символ завершения правильно работает и с именами файлов, содержащими пробелы или иные специальные символы, если при этом строка соответствия заключена в кавычки. Кроме того, если сместить точку ввода влево, а затем использовать символ завершения внутри строки, оставшийся справа от точки ввода текст будет отброшен.

Специальные символы, которые требуют обязательного заключения в кавычки: <пробел>&()[]{}^=
;!'+,`~". Все понятно?
/K - выполнение заданной команды без последующего завершения (здесь окно консоли не закроется);
/Q - отключение вывода команд на экран (ECHO OFF).
/R - аналогичен параметру /C;
/S - изменение поведения команды после /C или /K;
/T:цвет - задание цвета текста и фона окна консоли.

Параметр цвет имеет значение в виде двух шестнадцатеричных чисел: первое определяет цвет фона окна, а второе - текста в окне. Если набор цветов на момент запуска cmd.exe не менялся (например, другой сессией командного процессора), то по умолчанию будет использован параметр реестра, определяющий внешний вид консоли: HKEY_CURRENT_USER\Software\Microsoft\Command Processor"DefaultColor"=dword:00000000
Соответствия этих чисел цветам приведены в таблице (обратите, пожалуйста, внимание).

Цвет текста и фона окна консоли
Значение  Цвет
0 черный
1 синий
2 зеленый
3 голубой
4 красный
5 лиловый
6 желтый
7 белый
8 серый
9 светло-синий
светло-зеленый
светло-голубой
светло-красный
светло-лиловый
светло-желтый
ярко-белый


То есть результатом выполнения вот этой команды "CMD /T:7С" будут светло-красные буквы на белом фоне.
/U - вывод результатов выполнения команды в формате Unicode;
/V:ON (/V:OFF) - разрешение (запрет) отложенного расширения переменных среды (для конкретного вызова cmd.exe) с применением восклицательного знака "!" в качестве разделителя. Например, /V:ON разрешает использовать !var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит совсем к другим результатам внутри цикла FOR. 

Также отложенное расширение переменных среды можно включить или выключить в реестре, в разделах HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor (для локальной машины), HKEY_CURRENT_USER\Software\Microsoft\Command Processor (для текущего пользователя), установив параметр "DelayedExpansion"=dword:00000001 для разрешения и "DelayedExpansion"=dword:00000000 для запрета. 

Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /V командного процессора имеет приоритет над параметрами реестра. 

При включенном отложенном расширении переменных среды символ "!" (символ - восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения;
/X - означает то же, что и ключ /E:ON, из соображений совместимости;
/Y - то же, что и /E:OFF.
И в завершение еще несколько ценных замечаний. 
Если указаны ключи /C или /K, то остальная часть командной строки после такого ключа обрабатывается как командная строка, а обработка символов кавычек (") ведется таким образом. Символы кавычек в командной строке сохраняются, если выполняются все перечисленные ниже условия:
- ключ /S отсутствует;
- присутствует ровно два символа кавычек;
- между ними нет других специальных символов, как то: 
&<>()@^|;
- между ними имеется один или несколько пробелов;
- строка, заключенная в кавычки, является именем исполняемого файла.

В противном случае проверяется первый символ, и если он является символом кавычек, то он удаляется, также удаляется последний символ кавычек в командной строке, а весь текст после этого последнего символа кавычек сохраняется.

Источник: http://www.computery.ru/upgrade/
 


Copyright ©  Internet Zone, info@izcity.com 
Условия использования материалов смотрите здесь.