Эффективная консоль. Команда SETLOCAL - изменение переменных среды для текущего командного файла

Местонахождение: Windows\system32

Описание: Windows Command Processor

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

Параметры командной строки

Синтаксис для командной строки:

CMD [ команда]

Можно использовать одновременно несколько команд, используя между ними специальный разделитель - символы &&, при этом все сочетание нескольких команд должно быть заключено в кавычки, например, "команда&&команда&& команда ".

/? - вызов справки

/A - вывод результатов выполнения заданной команды в формате ANSI

/C - выполнение заданной команды с последующим закрытием окна консоли

/D - отключение выполнения команд AutoRun (которые первыми автоматически выполняются при вызове cmd.exe), заданных в специальных разделах реестра HKEY_LOCAL_MACHINE \Software\Microsoft\Command Processor\AutoRun и HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

/E:ON (/E:OFF) - разрешение (запрет) расширений команд. В Windows XP по умолчанию включена расширенная обработка всех команд cmd.exe, этот параметр служит для включения / выключения расширений конкретного процесса. Расширенная обработка включает следующие команды: 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, то смотри Автонабор команд ).

Параметры пользователя имеют приоритет над параметрами компьютера, значение параметра /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 /T:7С" будут светло-красные буквы на белом фоне.

/U - вывод результатов выполнения команды в формате Unicode

/V:ON (/V:OFF) - разрешение (запрет) отложенного расширения переменных среды (для конкретного вызова cmd.exe) с применением восклицательного знака "!" в качестве разделителя. Например, /V:ON разрешает использовать!var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит совсем к другим результатам внутри цикла FOR. При включенном отложенном расширении переменных среды символ "!" (восклицательный знак) может использоваться для замены текущего значения переменной среды во время выполнения; /X - означает то же, что и ключ /E:ON, из соображений совместимости; /Y то же, что и /E:OFF. И еще несколько замечаний.

Если указаны ключи /C или /K, то остальная часть командной строки после такого ключа обрабатывается как командная строка, а обработка символов кавычек (") ведется таким образом. Символы кавычек в командной строке сохраняются, если выполняются все перечисленные ниже условия: ключ /S отсутствует; есть ровно два символа кавычек; между ними нет других специальных символов, как то: &<>()@^|; между ними имеются один или несколько пробелов; строка, заключенная в кавычки, является именем исполняемого файла. В противном случае проверяется первый символ, и если он является символом кавычек, то он удаляется, также удаляется последний символ кавычек в командной строке, а весь текст после этого последнего символа кавычек сохраняется.

Таблица для задания цвета текста и фона окна консоли:

0 - черный; 1 - синий; 2 - зеленый; 3 - голубой; 4 - красный; 5 - лиловый; 6 - желтый; 7 - белый; 8 - серый; 9 - светло-синий; A - светло-зеленый; B - светло-голубой; C - светло-красный; D - светло-лиловый; E - светло-желтый; F - ярко-белый.

Кстати, цвет и другие настройки можно изменять и другим способом. Щелкните правой кнопкой мыши по строке заголовка окна и выберите пункт Свойства. Откроется окно с четырьмя вкладками, на которых будут доступны опции изменения настроек программы. Если вам не нравится стандартный черный экран командной строки, то на вкладке Color вам предлагается выбрать цвет экрана и текста либо из 16 стандартных цветов, для которых имеется соответствующие образцы, либо задав числовое значение цвета в формате RGB. На вкладке Layout настраивается размер окна и экранного буфера. Если в ранних ОС MS-DOS и Windows размер экрана оставался неизменным 25 строк в высоту и 80 символов в длину, и для вывода большего количества строк приходилось добавлять команду |more, то в системах NT и более поздних можно просто задать достаточно большой размер буфера экрана и пользоваться полосой прокрутки, что гораздо удобнее.

Текст в окне командной строки Для копирования и вставки текста в окно командной строки обычные для Windows комбинации клавиш, такие как Ctrl+C , Ctrl+V , работать не будут. Для извлечения текста из буфера обмена вам придется вызвать меню, щелкнув правой кнопкой мыши по заголовку окна, и выбрать подменю Edit. Или же просто щелкните правой кнопкой по окну. Для копирования текста из окна выберите пункт Mark и мышью выделите нужный текст. Затем либо нажмите Enter, либо в том же меню выберите Copy. Если надо вставить какой-то текст в окно командной строки, обратитесь к команде Paste. Для повторного выполнения команды воспользуйтесь стрелками <<вверх>> и <<вниз >>, позволяющими перемещаться по списку выполненных команд. Для очистки экрана от текста служит директива cls.

TITLE - для изменения заголовка строки

TITLE [строка] , где строка - это будущий заголовок окна командной строки (записывается без кавычек). После задания заголовка окна он может быть изменен только повторным вызовом команды TITLE. Использование данной команды может быть полезно в командных файлах.

Так, выполнение примера, который приведен ниже, будет сопровождаться появлением соответствующей надписи в заголовке окна:

TITLE Копируются файлы...

COPY \\Server\Share\*.doc C:\User\Common\*.doc

ECHO Копирование закончено.

TITLE Процесс завершен

Команда АТ - С помощью этой команды можно запускать команды и программы в определенное время.

AT [\\имя компьютера] [ | /DELETE ]

AT [\\имя компьютера] time [ /EVERY:дата[,...] | /NEXT:дата [,...]] "команда"

\\ имя компьютера указывает на удаленный компьютер, на котором могут быть запущены планируемые задачи. Если этот параметр не указан, то по умолчанию предполагается тот компьютер, на котором запускается команда АТ;

id идентификатор, назначенный указанной команде;

/delete отменяет намеченную команду. Если id опущен, все назначенные команды на компьютере отменены;

/yes этот параметр в случае использования с предыдущим параметром (/delete) автоматически включает подтверждение для всех запросов;

time время выполнения команды (в 24-часовом формате часы:минуты);

/interactive позволяет команде AT обмениваться с подключенными на данный момент в системе пользователями;

/every:дата[,...] выполняет команду в каждый указанный день (дни) недели или месяц. Если дата опущена, подразумевается текущий день месяца;

/next:дата[...] выполняет указанную команду при следующем наступлении указанной даты (например, в следующий четверг). Если дата не указанна, по умолчанию принимается текущий день месяца;

"команда" указывается команда Windows NT или пакетная программа, которая будет выполнена. Имя файла должно указываться полностью. При этом, если выполняется какая-либо из внутренних команд, например, COPY или DIR, а не исполняемый файл, то необходим запуск командного интерпретатора с ключом / С, например:

AT 10:00 "CMD /C DIR > C:\test.out.

Команда For - Ее возможности обширны, но мы ограничимся демонстрацией лишь одной из них - Копирование по сети на все машины сразу. Допустим, что требуется скопировать файл на двадцать машин. Делается это очень быстро. Сначала в файл list.txt записываем список всех имеющихся в сети машин. В консоли пишем:

net view > c:\list.txt

Затем, чтобы выполнить, например, копирование файла patch.exe на каждую машину из списка, даем команду:

FOR /F "tokens=1" %i in (с:\list.txt) do copy d:\temp\patch.exe "%i\C$\program files\ICQ"

Переменная %i будет автоматически принимать значение NetBIOS-имени машины из новой строки файла list.txt и на эту машину будет производиться копирование.

Изменение вида приглашения командной строки

cmstp.exe

Местонахождение: WINDOWS\system32

Описание: Microsoft Connection Manager Profile Installer

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

comp.exe

Местонахождение: WINDOWS\system32

Описание: File Compare Utility

Побайтное сравнение двух или нескольких файлов. Команда comp позволяет сравнивать файлы, находящиеся на разных дисках и в разных каталогах. При сравнении файлов с помощью команды comp выводятся их имена и расположения. Выполненная без параметров команда comp запрашивает файлы для сравнения.

Описание программы есть в Справке Windows

Синтаксис:

comp [файл1 ] [файл2 ] [/d ] [/a ] [/l ] [/n= кол_строк ] [/c ]

Чтобы сравнить содержимое каталога C:\Reports с содержимым каталога резервных копий \\Sales\Backup\April , введите следующую команду:

comp c:\reports \\sales\backup\april

Чтобы сравнить первые десять строк файлов в каталоге \Invoice и вывести результат в десятичном формате, введите следующую команду:

comp \invoice\*.txt \invoice\backup\*.txt /n=10 /d

compact.exe

Местонахождение: WINDOWS\system32

Описание: Программа сжатия файлов - File Compress Utility

Вывод сведений или изменение уплотнения файлов и каталогов в разделах NTFS. Запущенная без параметров команда compact выводит сведения об уплотнении файлов в текущем каталоге.

Описание программы есть в Справке Windows

Синтаксис:

compact [{/c|/u}] ] [имя_файла[...]]

control.exe

Местонахождение: Windows\system32

Описание: Панель управления Windows - Windows Control Panel

Данная команда служит для запуска апплетов Панели управления

Советы: Как автоматихировать вход в систему

Реестр: Запрет за запуск Панели управления и ее апплетов

convert.exe

Местонахождение: Windows\system32

Описание: File System Conversion Utility

Утилита командной строки служит для преобразования томов с файловой системой FAT и FAT32 в тома с файловой системой NTFS.

Синтаксис:

convert [том] /fs:ntfs

cscript.exe

Местонахождение: Windows\system32

Описание: Microsoft (r) Console Based Script Host

Сервер сценариев cscript.exe является консольным вариантом, предназначенный для взаимодействия с пользователем через командную строку (в отличии от GUI-приложения wscript.exe).

Синтаксис:

cscript [имя_сценария] [параметры_сервера] [аргументы_сценария]

Описание параметров есть в справке Windows

cacls.exe

Местонахождение: Windows\system32

Описание: Изменение таблиц управления доступом - Control ACLs Program

Программа служит для просмотра или изменения файлов избирательных таблиц управления доступом (DACL).

Описание программы есть в справке Windows

Вывод, задание и удаление переменных среды cmd.exe.

SET [переменная=[строка]]

переменная Имя переменной среды.

строка Строка символов, присваиваемая указанной переменной.

Введите SET без параметров для вывода текущих переменных среды.

Изменение команды SET при включении расширенной обработки команд:

Если при вызове указать только имя переменной без знака равенства и значения,

команда SET выведет значения всех переменных, имя которых начинается

с указанной строки. Например:

Эта команда выведет значения всех переменных, имена которых начинаются с "P".

Если имя переменной не найдено в текущей среде, при возврате команда SET

установит значение ошибки ERRORLEVEL 1.

Команда SET не допускает использование знака равенства в имени

переменной среды.

Команда SET поддерживает два дополнительных ключа:

SET /A выражение

SET /P variable=

Ключ /A указывает, что строка справа от знака равенства является числовым

выражением, значение которого вычисляется. Обработчик выражений очень

прост и поддерживает следующие операции, перечисленные в порядке убывания

приоритета:

() - группировка

! ~ - - унарные операторы

* / % - арифметические операторы

Арифметические операторы

<< >> - двоичный сдвиг

& - двоичное И

^ - двоичное исключающее ИЛИ

| - двоичное ИЛИ

= *= /= %= += -= - присвоение

&= ^= |= <<= >>=

Разделитель операторов

При использовании любых логических или двоичных операторов необходимо

заключить строку выражения в кавычки. Любые нечисловые строки в выражении

рассматриваются как имена переменных среды, значения которых преобразуются

в числовой вид перед использованием. Если переменная с указанным именем

не определена в системе, вместо нее подставляется нулевое значение. Это

позволяет выполнять арифметические операции со значениями переменных среды,

причем не нужно вводить знаки % для получения значений. Если команда

SET /A вызывается из командной строки, а не из пакетного файла, она выводит

окончательное значение выражения. Слева от любого оператора присваивания

должно стоять имя переменной среды. Числовые значения рассматриваются как

десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел,

и 0 для восьмеричных чисел. Например, числа 0x12,

и 022 обозначают десятичное число 18. Обратите внимание на запись

восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в

восьмеричной системе исчисления цифры 8 и 9 не используются.

Ключ /P позволяет установить значение переменной для входной строки, введенной

пользователем. Показывает указанное приглашение promptString перед чтением

введенной строки. Приглашение promptString может быть пустым.

Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в

расширенном результате на "str2". "str2" может быть пустой строкой для

эффективного удаления вхождений "str1" из расширенного вывода. "str1" может

начинаться со звездочки, и в этом случае это будет соответствовать любому

началу расширенного вывода до первого вхождения оставшейся части "str1".

Можно также использовать строки расширения.

расширит действие переменной среды PATH, затем использует только 5

символов, которые начинаются с 11-го символа (пропустив 10) расширенного

результата. Если длина не указана, по умолчанию используется оставшееся

значение переменной. Если оба значения (длина и число пропускаемых символов)

отрицательны, следующим используемым значением будет длина значения переменной

среды, добавленной к указанному значению пропуска или указанной длины.

извлечет последние 10 символов переменной PATH.

извлечет все символы переменной PATH, за исключением 2-х последних.

Наконец, добавлена поддержка связывания времени выполнения для переменных среды

окружения. По умолчанию эта поддержка отключена. Ключ /V командной строки

CMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /?

Связывание времени выполнения для переменных среды окружения полезно при обходе

ограничений раннего связывания, которое происходит при первом чтении текстовой

строки, а не при ее выполнении. Следующий пример демонстрирует возникающую

проблему при использовании раннего связывания переменных:

set VAR=before

If "%VAR%" == "before" (

if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения

Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях IF

подставляется в момент первого использования в первом IF, в том числе и в тело

первого ветвления IF, которое является составным выражением. В IF внутри

составного выражения в действительности сравниваются значения "before" и

"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:

set LIST=

For %i in (*) do set LIST=%LIST% %i

в данном случае список файлов текущей папки никогда не будет построен. Вместо

этого, значением переменной LIST будет имя последнего найденного файла.

И вновь, это случилось потому, что %LIST% подставляется всего один раз -

в момент обработки выражения FOR, когда список еще пуст.

Фактически, приведенный фрагмент эквивалентен следующему примеру:

for %i in (*) do set LIST= %i

в котором имя последнего найденного файла сохраняется в переменной LIST.

Связывание времени выполнения для переменных среды окружения происходит при

использовании специального символа (восклицательного знака), обозначающего

проведение сопоставления во время выполнения. Если включена поддержка связывания

времени выполнения, то для достижения ожидаемых результатов приведенные выше

фрагменты должны быть изменены следующим образом:

set VAR=before

If "%VAR%" == "before" (

Set VAR=after

If "!VAR!" == "after" @echo Тело внутреннего оператора сравнения

Set LIST=

For %i in (*) do set LIST=!LIST! %i

При включенной расширенной обработке команд доступны несколько переменных

среды, которые не отображаются в списке, отображаемом при вызове команды SET.

Значения этих переменных вычисляются динамически каждый раз при их извлечении.

Если пользователь явно задает переменные с одним из этих имен,

то это определение перекрывает соответствующее динамическое определение,

описанное ниже:

%CD% - раскрывается в строку текущей директории.

%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.

%TIME% - раскрывается в текущую дату, используя формат команды TIME.

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.

%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL

%CMDEXTVERSION% - раскрывается в текущее значение версии

расширенной обработки команд.

%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала

командный процессор.

    Команда SETLOCAL используется для временного изменения значений переменных среды в командных файлах Windows. Изменения среды, внесенные после выполнения команды SETLOCAL, являются локальными относительно текущего пакетного файла. Для восстановления их прежних значений необходимо выполнить команду ENDLOCAL. При достижении конца пакетного файла автоматически выполняется команда ENDLOCAL для всех действующих команд SETLOCAL, выполненных в этом пакетном файле и значения всех переменных окружения восстанавливаются к состоянию до выполнения команды SETLOCAL.

Формат командной строки:

SETLOCAL | ENABLEDELAYEDEXPANSION | DISABLEDELAYEDEXPANSION

Изменение команды SETLOCAL при включении расширенной обработки команд:

Команда SETLOCAL принимает необязательные аргументы: ENABLEEXTENSIONS или DISABLEEXTENSIONS. Это позволяет включить или отключить расширенную обработку команд до выполнения команды. См. CMD /? для подробного объяснения. ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION включает или отключает отложенное расширение переменной среды. См. SET /? для подробного объяснения. Эти изменения действуют до совпадения команды ENDLOCAL, независимо от исходного состояния до вызова команды SETLOCAL.

Если команда SETLOCAL вызывается с аргументом, она устанавливает код ошибки ERRORLEVEL. Если указан один из двух допустимых аргументов, код ошибки будет равен нулю, иначе возвращается значение 1. Это свойство можно использовать в пакетных файлах, чтобы определить доступность расширенной обработки команд, например:

VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Не удается включить расширенную обработку

Эта группа команд работает, так как в прежних версиях CMD.EXE команда SETLOCAL не устанавливает значение ERRORLEVEL. Команда VERIFY с недопустимым аргументом необходима для установки ненулевого значения ERRORLEVEL.

При использовании переменных окружения в командных файлах существует определенное ограничение, связанное с тем фактом, что присваиваемое значение остается без изменения при его модификации внутри группы команд, задаваемой скобками, например в командах IF или FOR . Для обхода данного ограничения используется запуск командного процессора с параметром /V:ON и вместо знаков процента, для получения принимаемого переменной значения, используются восклицательные знаки. Кроме того, существует возможность использовать стандартный запуск командного процессора, но с локальным включением данного режима командой:

Разница в результатах использования значений переменных довольно наглядно демонстрируется следующим командным файлом:


@ECHO OFF
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Со знаком процента=%VAR% , Со знаком вопроса=!VAR!

Команда set VAR=after выполняется внутри подпрограммы, ограниченной скобками и, если убрать команду Setlocal EnableDelayedExpansion или не использовать для получения значения переменной VAR восклицательные знаки, ее значение останется старым (тем, что было установлено до входа в подпрограмму). Аналогичная же проблема наблюдается и тогда, когда значение переменной изменяется внутри цикла команды FOR . Например, для получения списка файлов текущего каталога такой командный файл не будет работать:

set LIST=
for %%i in (*) do set LIST=%LIST% %%i
echo %LIST%

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

Setlocal EnableDelayedExpansion
set LIST=
for %%i in (*) do set LIST=!LIST! %%i
echo %LIST%
Теперь, значение переменной LIST внутри цикла FOR будет изменяться, последовательно принимая значения имен файлов, разделенных пробелом ( set LIST=!LIST! %%i )


Вывод, задание и удаление переменных среды cmd.exe.

SET [переменная=[строка]]

переменная Имя переменной среды.
строка Строка символов, присваиваемая указанной переменной.

Введите SET без параметров для вывода текущих переменных среды.

Изменение команды SET при включении расширенной обработки команд:

Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки. Например:

SET P

Эта команда выведет значения всех переменных, имена которых начинаются с "P ".

Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.

Команда SET не допускает использование знака равенства в имени
переменной среды.

Команда SET поддерживает два дополнительных ключа:

SET /A выражение
SET /P variable=

Ключ /A указывает, что строка справа от знака равенства является числовым
выражением, значение которого вычисляется. Обработчик выражений очень
прост и поддерживает следующие операции, перечисленные в порядке убывания
приоритета:


При использовании любых логических или двоичных операторов необходимо
заключить строку выражения в кавычки. Любые нечисловые строки в выражении
рассматриваются как имена переменных среды, значения которых преобразуются
в числовой вид перед использованием. Если переменная с указанным именем
не определена в системе, вместо нее подставляется нулевое значение. Это
позволяет выполнять арифметические операции со значениями переменных среды,
причем не нужно вводить знаки % для получения значений. Если команда
SET /A вызывается из командной строки, а не из пакетного файла, она выводит
окончательное значение выражения. Слева от любого оператора присваивания
должно стоять имя переменной среды. Числовые значения рассматриваются как
десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел,
и 0 для восьмеричных чисел. Например, числа 0x12,
и 022 обозначают десятичное число 18. Обратите внимание на запись
восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в
восьмеричной системе исчисления цифры 8 и 9 не используются.

Ключ /P позволяет установить значение переменной для входной строки, введенной
пользователем. Показывает указанное приглашение promptString перед чтением
введенной строки. Приглашение promptString может быть пустым.

Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в
расширенном результате на "str2". "str2" может быть пустой строкой для
эффективного удаления вхождений "str1" из расширенного вывода. "str1" может
начинаться со звездочки, и в этом случае это будет соответствовать любому
началу расширенного вывода до первого вхождения оставшейся части "str1".

Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5
символов, которые начинаются с 11-го символа (пропустив 10) расширенного
результата. Если длина не указана, по умолчанию используется оставшееся
значение переменной. Если оба значения (длина и число пропускаемых символов)
отрицательны, следующим используемым значением будет длина значения переменной
среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.

Наконец, добавлена поддержка связывания времени выполнения для переменных среды
окружения.
По умолчанию эта поддержка отключена. Ключ /V командной строки
CMD.EXE позволяет включать и выключать ее. Для вызова справки, наберите CMD /?

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

set VAR=before
if "%VAR% " == "before" (
set VAR=after
if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения
)

Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях IF
подставляется в момент первого использования в первом IF, в том числе и в тело
первого ветвления IF, которое является составным выражением. В IF внутри
составного выражения в действительности сравниваются значения "before" и
"after", что заведомо ложно. Следующий пример демонстрирует подобную ошибку:

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

в данном случае список файлов текущей папки никогда не будет построен. Вместо
этого, значением переменной LIST будет имя последнего найденного файла.
И вновь, это случилось потому, что %LIST% подставляется всего один раз -
в момент обработки выражения FOR, когда список еще пуст.
Фактически, приведенный фрагмент эквивалентен следующему примеру:

for %i in (*) do set LIST=%i

в котором имя последнего найденного файла сохраняется в переменной LIST.

Связывание времени выполнения для переменных среды окружения происходит при
использовании специального символа (восклицательного знака), обозначающего
проведение сопоставления во время выполнения. Если включена поддержка связывания
времени выполнения, то для достижения ожидаемых результатов приведенные выше
фрагменты должны быть изменены следующим образом:

set VAR=before
if "%VAR% " == "before" (
set VAR=after
if "!VAR! " == "after" @echo Тело внутреннего оператора сравнения
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

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

%CD% - раскрывается в строку текущей директории.

%DATE% - раскрывается в текущую дату, используя тот же формат команды DATE.

%TIME% - раскрывается в текущую дату, используя формат команды TIME.

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.

%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL

%CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд.

%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала
командный процессор.

Переменные среды, выставленные в моей Windows XP, которая уже 2 года живет без переустановки:

%ALLUSERSPROFILE% = C:\Documents and Settings\All Users
%CommonProgramFiles% = C:\Program Files\Common Files
%COMPUTERNAME% = "Имя компьютера"
%ComSpec% = C:\WINDOWS\system32\cmd.exe
%CYGWIN% = tty
%FP_NO_HOST_CHECK% = NO
%NUMBER_OF_PROCESSORS% = 2
%OS% = Windows_NT
%Path% = C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOW S\System32\Wbem
%PATHEXT% = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.W SF;.WSH
%PROCESSOR_ARCHITECTURE% = x86
%PROCESSOR_IDENTIFIER% = x86 Family 6 Model 15 Stepping 2, GenuineIntel
%PROCESSOR_LEVEL% = 6
%PROCESSOR_REVISION% = 0f02
%ProgramFiles% = C:\Program Files
%PROMPT% = $P$G
%SystemDrive% = C:
%SystemRoot% = C:\WINDOWS
%TEMP% = C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp
%TMP% = C:\DOCUME~1\"Имя пользователя"\LOCALS~1\Temp
%USERDOMAIN% = "Имя компьютера"
%USERNAME% = "Имя пользователя"
%USERPROFILE% = C:\Documents and Settings\"Имя пользователя"
%windir% = C:\WINDOWS

Командная строка или как её ещё называют cmd в операционной системе Windows 8 такая же как и в младших версиях Windows7, Windows Vista, Windows хр, отсюда следует что одни и те же команды одинаково работают во всех версиях.

Итак давайте для начала разберёмся как нам запустить командную строку. Для этого у вас должен быть работающий компьютер с операционной системой.

Некоторым командам если вы работаете через учётную запись обычного пользователя для выполнения бывает недостаточно прав в целях безопасности, поэтому всегда запускайте командную строку с правами администратора. Существует 2 способа запуска командной строки:

В появившемся окошке пишем cmd,нажимаем Ок.

Запустится окно командной строки с чёрным фоном.

2) Более быстрый способ: через горячие клавиши Win+R,здесь также в появившемся окошке пишем cmd,нажимаем ок.

В windows 8 вы можете воспользоваться только 2 способом, так как там нет меню Пуск. Напишем нашу первую команду help которая выведет список всех доступных команд с краткими пояснениями.

Список всех существующих команд командной строки Windows:

ASSOC Печать на экран или модификация сопоставлений по расширениям имен файлов.
ATTRIB Просмотр и модификация свойств файлов.
BREAK Блокирует или разблокировывает расширенную обработку CTRL+C в системе DOS.
BCDEDIT Устанавливает свойства в базе данных загрузки, которая позволяет управлять начальной загрузкой.
CACLS Выводит данные и изменяет списки управления доступом (ACL) к файлам.
CALL Вызывает один пакетный файла из другого, а также может передавать входные аргументы.
CD
CHCP Вывод или задание кодировки.
CHDIR Выводит название или перемещает к другой папке.
CHKDSK Диагностика накопителя на ошибки.
CHKNTFS Показывает или изменяет диагностику накопителя во время загрузки.
CLSО чистка дисплея от всех символов.
CMD Запускает программу командной строки Windows. На одном компьютере их можно запустить бесконечное количество. Они будут работать независимо друг от друга.
COLOR Изменяет и устанавливает основной фон окна и самих шрифтов.
COMP Показывает различия и сравнивает содержимое двух файлов.
COMPACT Изменяет и показывает сжатие файлов в NTFS.
CONVERT Изменяет дисковые тома FAT в NTFS. Текущий диск изменить не удастся.
COPY Создаёт копию файла или файлов и помещает их в указанное место.
DATE Показывает или устанавливает текущую дату.
DEL Уничтожает один или несколько файлов сразу.
DIR Показывает имена файлов и папок с их датой создания,находящихся в текущей или указанной в параметрах папки.
DISKCOMP Сравнивает и показывает различия 2 гибких накопителей.
DISKCOPY Создаёт копию содержимого одного гибкого накопителя на другой.
DISKPART Показывает и изменяет свойств раздела диска.
DOSKEY Изменяет и повторно вызывает командные строки; создаёт макросы.
DRIVERQUERY Отображает сведения о «положении дел» и атрибутах драйвера устройства.
ECHO Выводит текстовую информацию и меняет режим отображения команд на экране.
ENDLOCAL Подводит к концу локализацию среды для пакетного файла.
ERASE Уничтожает файл или файлы.
EXIT Прекращает работу программы командной строки
FC Показывает различия двух файлов или двух наборов файлов а также сравнивает их
FIND Осуществляет поиск текстовой строки в файлах либо в одном файле.
FINDSTR Расширенный поиск текстовых строк в файлах.
FOR Цикл. Повторяет выполнение одной и той же команды указанное количество раз
FORMAT Форматирование накопителя для работы с Windows.
FSUTIL Показывает и устанавливает атрибуты файловой системы.
FTYPE Даёт возможность изменить и просмотреть типы файлов, которые в основном применяются при сопоставлении по расширениям имен файлов.
GOTO Передаёт управление к другой указанной команде.
GPRESULT Выводит сведения о групповой политике для компьютера или пользователя.
GRAFTABL Даёт возможность Windows показывать расширенный набор символов в графическом режиме.
HELP Выводит все данные о существующих командах Windows.
ICACLS Показывает, модифицирует, архивирует либо восстанавливает списки ACL для файлов и папок.
IF Выполняет команды по заданному условию.
LABEL Создаёт, модифицирует и уничтожает метки тома для накопителей.
MD Создаёт пустой каталог.
MKDIR Создаёт пустой каталог.
MKLINK Cоздаёт символические и жесткие ссылки
MODE Настраивает системные устройства.
MORE Последовательно выводит информацию по блокам размером в один экран.
MOVE Перемещает файлы из одного места в другое.
OPENFILES Показывает файлы, которые открыты на общей папке удаленным юзером.
PATH Выводит или задаёт полный путь к исполняемым файлам.
PAUSE Прекращает выполнение команд командной строки и выводит информирующий текст.
POPD Восстанавливает предыдущее значение активной папки, которое было сохранено посредством команды PUSHD.
PRINT Выводит на печать содержимое текстового файла.
PROMPT Модифицирует приглашение в командной строке Windows.
PUSHD Сохраняет значение активной папки и переходит к другой папке.
RD Уничтожает каталог.
RECOVER Возрождает данные, способные читаться, с плохого или поврежденного винчестера.
REM Помещает комментарии в пакетные файлы и файл CONFIG.SYS.
REN Меняет название как файлов так и папок.
RENAME Аналогичен команде REN.
REPLACE Меняет файлы местами.
RMDIR Уничтожает каталог.
ROBOCOPY Продвинутый инструмент для копирования файлов и целых папок
SET Показывает, устанавливает и уничтожает переменные среды Windows.
SETLOCAL Производит локализацию изменений среды в пакетном файле.
SC Даёт возможность работать со службами
SCHTASKS Позволяет запускать любые программы и последовательно выполнять нужные команды по заданному плану
SHIFT Меняет позицию (сдвиг) подставляемых параметров для пакетного файла.
SHUTDOWN Завершает работу компьютера.
SORT Сортирует ввод по заданным параметрам.
START Запускает программу или команду в новом окне.
SUBST Назначение заданному пути имени накопителя.
SYSTEMINFO Выводит данные об операционной системе и конфигурации компьютера.
TASKLIST Показывает список всех запущенных процессов с их идентификаторами.
TASKKILL “Убивает” или останавливает процесс.
TIME Устанавливает и выводит системное время.
TITLE Задаёт название окну для текущего сеанса интерпретатора командных строк CMD.EXE
TREE Выводит директории накопителя в удобном наглядном виде.
TYPE Выводит содержимое текстовых файлов.
VER Выводит краткие сведения о версии Windows.
VERIFY Проверяет на ошибки записи файла на накопителе.
VOL Выводит на дисплей метки и серийный номер тома накопителя.
XCOPY Создаёт копию файлов.
WMIC Выводит WMI в командной строке.