如何取消定义一个MS-DOSvariables?
比方说,我在CMDshell中执行以下内容:
set FOO=bar
有没有一种方法来取消定义这个variables,除了回收CMDshell?
是的,你可以用它来解除它
set FOO=
重要说明 :确保在=后面没有尾随的空格/其他不可见字符。 set FOO=
!= set FOO=
一个安全的方法来取消variables是也使用引号,那么尾部空格没有问题。
set FOO=bar echo %FOO% set "FOO=" text after the last quote is ignored echo %FOO%
另一种方法
@Echo oFF setlocal set FOO=bar echo %FOO% endlocal echo %FOO% pause
注意:这在交互式命令提示符下不起作用。 但在批处理脚本中工作。
这适用于我在我的Windows 7 CMDshell:
set FOO=bar echo %FOO% // bar set FOO= echo %FOO% // empty; calling "set" no longer lists it
我只提供以下内容作为评论,但是我认为这足够重要。
很多以前的答案都提到,需要提防尾随空间; 当然,这是真的。 不过,我发现有时候尾随的空格只是想进入那里 – 特别是如果你正在做一个命令行,需要空间作为命令分隔符。
这是解决这个问题的方法:
SET FOO=Bar echo %FOO% :: outputs Bar SET "FOO=" echo %FOO% :: outputs %FOO%
通过用双引号包装声明,间距问题可以完全避免。 当通过连接来创buildvariables以消除两者之间的空格时,这也非常有用 – 例如 – path,例如:
SET A=c:\users\ && SET D=Daniel SET P="%a%%d%" ECHO %P% :: outputs "C:\Users\ Daniel" :: Notice the undesirable space there