CMD – запуск новой копии интерпретатора команд Windows.

Cmd – запуск новой копии интерпретатора команд windows.

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

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


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  Вывод результатов выполнения команд в формате ANSI.

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

/T:fg  Выбор цвета переднего плана/фона (более подробно см. COLOR /?)

/E:ON  Разрешение расширенной обработки команд (см. ниже)

/E:OFF  Запрет расширенной обработки команд (см. ниже)

/F:ON  Разрешение символов завершения имен файлов и папок (см. ниже)

/F:OFF  Запрет символов завершения имен файлов и папок (см. ниже)

/V:ON  Разрешение отложенного расширения переменных среды с применением символа ‘!’ в качестве разделителя. Например, /V:ON разрешает
использовать !var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных
при вводе, что приводит к совсем другим результатам внутри цикла FOR.

/V:OFF  Запрет отложенного расширения переменных среды.

Чтобы указать в одной строке несколько команд, следует разделить их
символами ‘&&’ и заключить в кавычки. Кроме того, из соображений
совместимости, /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 MicrosoftCommand ProcessorAutoRun

и/или

HKEY_CURRENT_USER Software Microsoft Command ProcessorAutoRun

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

По умолчанию расширенная обработка команд включена. Чтобы запретить
расширенную обработку для конкретного вызова, используется параметр /E:OFF.

Можно включить или отключить расширенную обработку команд для всех вызовов
CMD.EXE на данном компьютере или для данного сеанса пользователя, задав с
помощью REGEDIT.EXE в системном реестре значение 0x1 или 0x0 для параметров
REG_DWORD для следующих разделов:

HKEY_LOCAL_MACHINE Software MicrosoftCommand Processor EnableExtensions

и/или

HKEY_CURRENT_USER SoftwareMicrosoft Command Processor EnableExtensions

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

В пакетном файле аргументы SETLOCAL ENABLEEXTENSIONS или DISABLEEXTENSIONS
переопределяют параметр /E:ON или /E:OFF. Для получения дополнительных
сведений введите “SETLOCAL /?”.

При расширенной обработке команд изменения и/или добавления затрагивают
следующие команды:


DEL или ERASE

COLOR

CD или CHDIR

MD или MKDIR

PROMPT

PUSHD

POPD

SET

SETLOCAL

ENDLOCAL

IF

FOR

CALL

SHIFT

GOTO

START (изменен также вызов внешних команд)

ASSOC

FTYPE

Для получения подробных сведений введите “имя_команды /?”.

Отложенное расширение переменных среды НЕ ВКЛЮЧЕНО по умолчанию. Можно
включить или отключить отложенное расширение переменных среды для конкретного
вызова CMD.EXE с помощью параметра /V:ON или /V:OFF. Можно включить или
отключить отложенное расширение переменных среды для всех вызовов CMD.EXE на
данном компьютере или для данного пользователя, задав с помощью команды
REGEDIT.EXE в системном реестре значение 0x1 или 0x0 для параметров REG_DWORD
для следующих разделов:

:/>  Как отключить DEP в Windows?

HKEY_LOCAL_MACHINE Software MicrosoftCommand Processor DelayedExpansion

и/или

HKEY_CURRENT_USER SoftwareMicrosoft Command Processor DelayedExpansion

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

В пакетном файле аргументы SETLOCAL ENABLEDELAYEDEXPANSION или
DISABLEDELAYEDEXPANSION переопределяют параметр /V:ON или /V:OFF. Для получения
дополнительных сведений введите “SETLOCAL /?”.

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

Можно включить или отключить завершение имен файлов и папок для
конкретного вызова CMD.EXE с помощью ключей /F:ON или /F:OFF.
Завершение имен можно включить или отключить для
всех вызовов CMD.EXE на данном компьютере или для данного пользователя,
с помощью REGEDIT.EXE задав значения REG_DWORD в системном реестре
для следующих разделов:


HKEY_LOCAL_MACHINE Software Microsoft Command Processor CompletionChar

HKEY_LOCAL_MACHINE Software Microsoft Command Processor PathCompletionChar

и/или


HKEY_CURRENT_USER SoftwareMicrosoft Command Processor CompletionChar

HKEY_CURRENT_USER SoftwareMicrosoft Command Processor PathCompletionChar

установив их шестнадцатеричные значения равными коду управляющего символа,
используемого для конкретной функции (например, 0x4 для CTRL-D или 0x6 для
CTRL-F). Параметры пользователя перекрывают параметры компьютера.
Ключи командной строки, в свою очередь, перекрывают параметры реестра.

Если завершение включено с помощью ключа командной строки /F:ON,
то используются два управляющих символа: CTRL-D для имен папок и CTRL-F
для имен файлов. Чтобы отключить конкретный символ завершения в системном
реестре, в качестве кода специального символа используется шестнадцатеричное
значение символа пробела (0x20).

Завершение вызывается при вводе одного из этих двух специальных символов.
Функция завершения берет строку пути слева от точки ввода, дописывает
к ней символ шаблона, если таковой отсутствует, а затем строит список
путей, которые соответствуют полученному определению. После этого
выводится первый элемент этого списка соответствующих путей. Если же
список пуст, то подается звуковой сигнал и ничего не выводится.
После этого повторный ввод того же самого специального символа приводит
к циклическому перебору всех соответствующих путей. Нажатие клавиши
Shift при вводе управляющего символа позволяет просматривать список
путей в обратном порядке. Если изменить выведенный путь, а затем снова
ввести управляющий символ, сохраненный список очищается и строится новый
список путей. То же самое происходит, если переключиться с одного символа
завершения на другой. Единственное отличие при использовании символа
завершения файла состоит в том, что при этом для построения списка
соответствия берется и путь, и имя файла, а при использовании символа
завершения папки берется только путь. Если символ завершения используется
в одной из встроенных команд манипулирования папками (CD, MD или RD), то
всегда подразумевается символ завершения папок.

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

Специальные символы, которые требуют обязательного заключения в кавычки:

пробел


&()[]{}^=;!’ ,`~

Примеры использования:

cmd.exe /F:ON – запустить новое окно командной строки с включенным
режимом использования символов завершения имен файлов и папок. Данный режим
облегчает набор имен, например, если набрать символ “S” и нажать CTRL D, то
вместо него будет подставлено имя каталога, начинающееся на “S”, при следующем
нажатии CTRL-D – имя следующего по алфавиту, если такой существует, например:

SAVED – при первом нажатии.

“System Volume Information” – при втором нажатии CTRL D. Если имя содержит пробел, то оно заключается в двойные кавычки.

Для подстановки имен файлов используется комбинация CTRL F.

Использование символов завершения можно настроить для постоянного использования на данном компьютере, как описано в статье Настройка командной строки Windows.

cmd.exe /U /C “C:Program Files (x86)FPingerCollect.exe” – выполнить запуск программы “Collect.exe” в режиме вывода результатов в кодировке UNICODE и завершиться.

:/>  Скачать Movie Maker для Windows 10 и установить программу на компьютер

cmd.exe /A /K “C:Program Files (x86)FPingerCollect.exe” – запустить программу “Collect.exe” в режиме вывода результатов в кодировке ANSI и ожидать ввод команд пользователя.

cmd /C /V:ON exanpfor.bat – выполнить командный файл exampfor.bat в режиме разрешения отложенного расширения переменных среды с применением
символа ‘!’ в качестве разделителя.

cmd /T:f0 – запустить командный процессор в режиме отображения черных символов на белом фоне.

В дополнение к данной теме:

Настройка командной строки Windows

Примеры командных файлов Windows

Весь список команд CMD Windows

Особенности

  • Разрешается в одной программе неоднократно применять endlocal и setlocal.
  • Имеется специальная переменная, которая имеет название ERRORLEVEL. Она используется в ходе выполнения setlocal. Если все в норме, значение будет составлять 0, а при ошибке -1. 

Расшифровка

enableextension

Позволяет использовать расширения командного процессора (КП). Они будут применяться до того периода, пока не возникнет endlocal. Отличительной особенностью является тот факт, что состояние расширений КП не оказывает влияния на процесс.

disableextensions


Завершает применение расширения КП до тех пор, пока не возникнет endlocal. Как и в предыдущем случае, состояния расширений КП перед setlocal не играют роли.

enabledelayedexpansion

Обеспечивает начало работы расширений переменной среды (ПС). Предусматривается задержка, пока не возникнет команда endlocal.

disabledelayedexpansion


Расширения ПС будут выключены. Имеется определенная задержка до возникновения endlocal. Это происходит без какого-либо воздействия или влияния со стороны состояния КП перед setlocal.

Используется в тех ситуациях, когда поставлена задача отобразить справочные сведения.

Синтаксис

setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}

Bat batch file setlocal, endlocal command detailed – programmer sought

The result of the setlocal and endlocal commands is to let the intermediate program change the system variables only within the program, without affecting the entire system level.

E.g

@echo off
setlocal
path=d:
Echo local environment variable path value
set path
endlocal
 Echo system environment variable path value
set path

In the above example, after the second line setlocal, the third line is assigned to the variable path, and the fourth line is to display the value. After the sixth line endlocal, redisplay the system variable path (the seventh line), you will find that the path value before the program is running, not changed by the program.

setlocal enabledelayedexpansion

The delay variable is called “delayed environment variable extension”. To understand this, we must first understand what is called extension!

When CMD interprets our commands, it first reads a complete command line and then performs some command format matching to see if the format of the command you entered meets his requirements. If we want to be at us The command refers to some variables, then how do we let CMD recognize this variable when interpreting our commands? At this point we can add a % sign to the variable name, such as %name%. When CMD is reading When we take our entire line of commands for format matching, we will find that the name of the character has a % sign on both sides, so it will not be treated as a normal character, but will be treated as a variable. The variable name is called name. Then CMD will find the value corresponding to the variable name, replace the variable name (name) with the value of the variable name, (if the variable name does not exist, it will return a null value). Then replace this and match the command execution The process of replacing the value is called variable expansion. To put it bluntly, the name of the variable is replaced by its value! This is the process of how the batch recognizes a variable. (Note: here is only the extension of the variable. Meaning, not delaying the expansion of environment variables, to understand the extension of the environment variable, you must first understand what is the extension of the variable) that is how the batch process recognizes a variable._
For example, this one BAT

set var=test
echo %var%

After CMD reads the command echo %var%, it will perform the matching operation. It immediately finds that there are % numbers on both sides of the var character. Then he will treat it as a variable. Check the name of the var variable. Is not a value, if there is to replace the variable name var with his value, here our VAR in the previous command set var=test, assign var value to test, so he will use test to change the variable %var% The name is replaced, and the result of the replacement is the echo test. These steps are the steps of the CMD matching operation. After the matching, he executes the echo test statement. At this time, our CMD will echo a test. What is the environment variable extension knows, what is the delay environment variable extension? When understanding the environment variable extension, we know that when CMD interprets the command, it will first read a complete command and then perform the matching operation. When matching, he will replace the variable in the command with the value of the variable, and then execute the replacement command.
The problem lies in “a complete command”. In BAT, commands such as IF FOR can be bracketed and some commands are nested inside.
For a command that can be expanded with other commands, the full format is for %%i in (…). At this point, if we are in parentheses Embedding some commands that set the value of a variable will cause problems!
See example

@echo off
for /l %%i in (1,1,5) do (
    set var=%%i
    echo %var%
)

It stands to reason that the implementation result should be

:/>  Что такое Сведения о системе (msinfo32)?

1
2
3
4
5

But after execution, it shows 5 blank lines of error! Why? Understand the knowledge we have above

@echo off
set var=test
for /l %%i in (1,1,5) do (
    set var=%%i
    echo %var%
)

This will print 5 tests, indicating that for /l %%i in (1,1,5) does not work.

Through these two examples, everyone should understand that if only the environment variable extends the process, if we perform the assignment operation in the command that can nest the command, it will cause our BAT to assign a value to the variable. Then this When the “delay environment variable extension” is introduced, this concept is proposed. In batch processing, we can use the setloacl ENABLEDELAYEDEXPANSION command to enable “delay environment variable expansion”. After we enable “delay environment variable extension”, when CMD is in When interpreting a command with a nested format, it will execute the nested command one by one, and then perform the matching operation, so that our assignment will be completed. After the “delay environment variable extension” is enabled, CMD will use the ! sign to judge whether this is a variable. If it is not enabled, the variable is judged in the format of %name%. After it is enabled, it is judged by the format of !name!, we need to pay attention to this symbol!
example:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set var=test
for /l %%i in (1,1,5) do (
    set var=%%i
    echo !var!
)

The result of the execution should be

1
2
3
4
5

So everyone should understand what is the extension of the environment variable extension.
Another example

@echo off
set var=test & echo %test%
pause

This command is placed on one line, indicating that he is a complete command. If the “Delay Environment Variable Extension” is not enabled, the above assignment error will occur!
changed to this

@echo off
setlocal ENABLEDELAYEDEXPANSION
set var=test & echo !var!
pause

It’s easy to understand!

Transfer from:

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

Adblock
detector