如何取消定义MS-DOS变量?

use*_*004 80 windows cmd batch-file

假设我在CMD shell中执行以下命令:

set FOO=bar
Run Code Online (Sandbox Code Playgroud)

除了回收CMD shell之外,有没有办法取消定义这个变量?

Mad*_*iha 122

是的,你可以解决它

set FOO=
Run Code Online (Sandbox Code Playgroud)

或明确使用:

set "FOO="
Run Code Online (Sandbox Code Playgroud)

确保=符号后面没有尾随无关(不可见)字符.那是:

  • set FOO=不同于set FOO=      .

  • @BugsForBreakfast 这是 PowerShell 中正确的命令,“set FOO”对应“cmd”。 (2认同)

jeb*_*jeb 28

取消设置变量的安全方法是使用引号,然后尾随空格没有问题.

set FOO=bar
echo %FOO%
set "FOO=" text after the last quote is ignored
echo %FOO%
Run Code Online (Sandbox Code Playgroud)


wal*_*2mi 10

另一种方法

@Echo oFF

setlocal
set FOO=bar
echo %FOO%
endlocal

echo %FOO%

pause
Run Code Online (Sandbox Code Playgroud)

注意:这不适用于交互式命令提示符.但是在批处理脚本中工作.


Pek*_*ica 8

这适用于我的Windows 7 CMD shell:

set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
Run Code Online (Sandbox Code Playgroud)

  • 空格在`set`命令中很重要.如果您尝试`set FOO = bar`然后尝试`设置FOO =`,它将不会取消设置'FOO'.但是,出于某种原因,它们在`%%`中并不显着(如?). (2认同)