Допустим, я выполняю в оболочке CMD следующее:
set FOO=bar
Есть ли способ отменить определение этой переменной, кроме повторного использования оболочки CMD?
windows
batch-file
cmd
user288004
источник
источник
cmd.exe
) ??set var=
ответ работает под MS-DOS 6.22 command.com точно так же, как и под Windows cmd.exe. (Однако, в отличие от Windows, двойные кавычки вокруг var = не работают, вместо этого создается переменная среды, имя которой начинается с двойной кавычки.)Ответы:
Да, вы можете отключить его с помощью
Или явно используя:
Убедитесь, что после
=
знака не идут посторонние (невидимые) символы . То есть:set FOO=
отличается отset FOO=
.источник
Безопасный способ отключить переменную - использовать также кавычки, тогда не будет проблем с конечными пробелами.
источник
другой метод
Примечание: это не будет работать в интерактивной командной строке. Но работает в пакетном режиме.
источник
Это работает для меня в моей оболочке CMD Windows 7:
источник
set
команде важны пробелы . Если вы попробуете,set FOO = bar
а потом попробуетеset FOO=
, он не сбросит "FOO". Но почему-то внутри они (как?) Не значимы% %
.Я бы предложил следующее только в качестве комментария, но я думаю, что это достаточно важно, чтобы стоять отдельно.
Во многих предыдущих ответах упоминалось, что нужно остерегаться конечных пробелов; и это точно правда. Однако я обнаружил, что иногда конечные пробелы просто хотят попасть туда, несмотря ни на что - особенно если вы используете однострочную командную строку и нуждаетесь в пробеле в качестве разделителя команд.
Это решение этой проблемы:
Заключив объявление таким образом в двойные кавычки, можно полностью избежать проблемы с интервалом. Это также может быть полезно, когда переменные создаются путем объединения, чтобы исключить пробелы между путями, например:
источник