如何在Windows批处理文件中将PATH设置为带空格的另一个变量值

EMP*_*EMP 5 windows scripting path batch-file

我有一个Windows批处理脚本问题,我正在抨击我的头(没有双关语意).有问题的脚本如下所示:

if defined _OLD_VIRTUAL_PATH (
    set PATH=%_OLD_VIRTUAL_PATH%
)
Run Code Online (Sandbox Code Playgroud)

当我运行并_OLD_VIRTUAL_PATH设置时,我得到:

\Microsoft was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

_OLD_VIRTUAL_PATH是一个最初设置的变量,PATH它包含空格 - 我很确定这是问题所在.但是解决方案是什么?如果我将它括在引号中,它会成功运行,但我不认为PATH变量的整个值应该在引号中.

Chr*_*ich 7

这里你的问题不是空格,而是一个右括号.您可能正在运行64位系统,其中32位应用程序的Program Files目录是Program Files (x86).在批处理文件中的括号内的块中,右括号结束该块,因此该行的其余部分会导致语法错误.

您有两种方法可以解决此问题:

1)将完整的set参数放在引号中.这导致关闭的paren不被识别为块结束:

if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)
Run Code Online (Sandbox Code Playgroud)

2)不要使用块:

if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
Run Code Online (Sandbox Code Playgroud)

  • @Michael:这不是空间问题.我重写了这篇文章(希望克里斯不介意;如果需要,他可以回滚)并解释了什么是错的以及为什么. (2认同)