Shell Bat:Set命令在括号内不起作用

Shell Bat:Set命令在括号内不起作用,shell,batch-file,cmd,command,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:\ProgramFiles(

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

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:\ProgramFiles(x86)\NVIDIA Corporation\PhysX\Common

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


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

如果
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)
部分中的右栏关闭了原来的左栏,因此该行中的下一个部分是
\NVIDIA Corporation\PhysX\Common;C:\Myfolder)
这就是错误的原因

为避免此错误,只需将
set
命令中的值括起来:

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

将行放在括号内时,必须将路径分配括在引号中:
(设置“path=%path%;C:\Myfolder”)
;否则,
%path%
的圆括号将关闭行中的圆括号,因此下一部分将标记为错误。谢谢Aacini。。成功了。请把它作为答案贴出来。我会记下来的。。