蝙蝠:设置命令在括号内不起作用

时间:2017-01-26 05:45:41

标签: shell batch-file cmd command

我遇到过这种蝙蝠命令的奇怪行为:

Set path=%path%;C:\Myfolder;

完美无缺。但是,当我把它放在括号内时,它表现得很奇怪:

if defined WINDIR (set path=%path%;C:\Myfolder)
\NVIDIA was unexpected at this time.

甚至

(set path=%path%;C:\Myfolder)
\NVIDIA was unexpected at this time.

请注意

  

C:\ Program Files(x86)\ NVIDIA Corporation \ PhysX \ Common

是我的Path环境变量的一部分。

在这里使用()有什么问题?

1 个答案:

答案 0 :(得分:0)

如果set命令放在括号内,则%path%扩展会放置一个右括号来关闭原始数据;那就是:

set path=C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common

(set path=%path%;C:\Myfolder)

在第二行展开%path%变量时,结果如下:

(set path=C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Myfolder)

您可能会看到(x86)部分中的右侧paren关闭了原来的左侧paren,因此该行中的下一部分是\NVIDIA Corporation\PhysX\Common;C:\Myfolder),这是导致错误的原因。

要避免此错误,请在set命令中用引号括起来:

(set "path=%path%;C:\Myfolder")