【问题标题】:Bat: Set command not working inside parenthesis蝙蝠:设置命令在括号内不起作用
【发布时间】:2017-01-26 05:45:41
【问题描述】:

我遇到过这种奇怪的 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 环境变量的一部分。

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

【问题讨论】:

  • 当行被放置在 inside 括号中时,您必须将路径分配用引号括起来:(set "path=%path%;C:\Myfolder");否则%path% 的括号将关闭该行中的括号,因此下一部分标记为错误。
  • 感谢 Aacini .. 它奏效了。请发布它作为答案。我会标记它..

标签: shell batch-file cmd command


【解决方案1】:

如果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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多