Подтвердить что ты не робот

Как определить переменную MS-DOS?

Скажем, я выполняю следующее в оболочке CMD:

set FOO=bar

Есть ли способ определить эту переменную, кроме утилизации оболочки CMD?

4b9b3361

Ответ 1

Да, вы можете отключить его с помощью

set FOO=

Важное примечание. Убедитесь, что после символа = нет конечных пробелов/других невидимых символов. set FOO=!= set FOO= 

Ответ 2

Безопасный способ отключения переменной - использовать также кавычки, тогда нет проблем с конечными пробелами.

set FOO=bar
echo %FOO%
set "FOO=" text after the last quote is ignored
echo %FOO%

Ответ 3

Это работает для меня в моей оболочке CMD Windows 7:

set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it

Ответ 4

другой метод

@Echo oFF

setlocal
set FOO=bar
echo %FOO%
endlocal

echo %FOO%

pause

Примечание. Это не будет работать в интерактивной командной строке. Но работает в пакетном режиме script.

Ответ 5

Я бы предложил следующее только в качестве комментария, но я думаю, что это достаточно важно, чтобы стоять самостоятельно.

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

Это решение этой проблемы:

SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%

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

SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there