Bat:设置命令在括号内不起作用
Bat: Set command not working inside parenthesis
我遇到过 bat 命令的这种奇怪行为:
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 环境变量的一部分。
这里用()有什么问题吗?
如果 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")
我遇到过 bat 命令的这种奇怪行为:
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 环境变量的一部分。
这里用()有什么问题吗?
如果 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")