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

标签 windows scripting batch-file path

我遇到了一个 Windows 批处理脚本问题,我一直在抨击这个问题(没有双关语意)。有问题的脚本如下所示:

if defined _OLD_VIRTUAL_PATH (
    set PATH=%_OLD_VIRTUAL_PATH%
)

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

\Microsoft was unexpected at this time.

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

最佳答案

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

你有两种方法来解决这个问题:

1) 将完整的 set 参数放在引号中。这会导致右括号不被识别为 block 的结尾:

if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)

2) 不要使用 block :

if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%

关于windows - 如何在 Windows 批处理文件中将 PATH 设置为另一个带空格的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2771285/

相关文章:

windows - 无法获取服务 Powershell 的状态

android - sl4a python 通知问题

batch-file - 如何在不按Y确定的情况下批量自动强制删除文件夹中的文件?

windows - 如何根据前缀列表(txt)批量复制文件

c++ - Cmake 将选项设置回默认值

windows - Windows程序使用多少个堆栈?

java - "Insufficient system resources..."错误是什么意思?

mysql - 通过脚本为 Drupal 6 安装创建 MySQL 数据库

linux - 意外标记附近的语法错误 `if'

batch-file - 执行批处理文件中的快捷链接,而不必等待应用程序退出