可以说我在CMD shell中执行以下命令:
set FOO=bar
除了回收CMD shell外,还有什么方法可以取消定义此变量?
可以说我在CMD shell中执行以下命令:
set FOO=bar
除了回收CMD shell外,还有什么方法可以取消定义此变量?
set var=
答案在MS-DOS 6.22 command.com下的工作原理与Windows cmd.exe下的工作原理相同。(但是,与Windows不同,在var =处用双引号不起作用,而是创建了一个以双引号开头的环境变量。)
Answers:
在我的Windows 7 CMD Shell中,这对我有用:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
命令中空格很重要。如果尝试set FOO = bar
再尝试一次set FOO=
,则不会取消设置“ FOO”。但是由于某种原因,它们在内部并不重要% %
。
我仅提供以下内容作为评论,但我认为重要的是能够独立存在。
先前的许多答案都提到,需要注意尾随空格;并且可以肯定的是,但是我发现,有时无论什么情况,尾随空格都只想进入该空格-特别是如果您正在执行命令行单线并且需要使用空格作为命令分隔符。
这是解决该问题的方法:
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
cmd.exe
)?