【问题标题】:Parse an environment variable in a Windows BAT script在 Windows BAT 脚本中解析环境变量
【发布时间】:2017-03-07 19:07:45
【问题描述】:

我正在尝试为 Nuke 软件创建一个简单的应用程序启动器,它通过评估环境变量将路径放在一起。变量的值有两种使用方式。首先,它按原样使用。第二次我需要拆分变量并使用前半部分。

为系统设置的环境变量:

NUKE_VERSION = 10.0v5

应用路径:

C:\Program Files\Nuke10.0v5\Nuke10.0.exe

下面的代码在 cmd 提示符下运行良好:

FOR /F "delims=v tokens=1" %i IN ("%NUKE_VERSION%") DO set NUKE_MAJOR=%i
"C:\Program Files\Nuke%NUKE_VERSION%\Nuke%NUKE_MAJOR%.exe"

但是当我使用代码运行 .bat 时,它会返回此错误:

NUKE_VERSIONi 此时出乎意料。

对正在发生的事情有任何见解吗?我可以在 python 中做到这一点,但是我不应该做这么简单的事情,对吧?非常感谢。

【问题讨论】:

  • 你的 bat 文件是什么样的?当你运行一个bat文件时,它通常会启动它自己的命令环境,这个环境可能有也可能没有事先声明过的变量,所以,有几个因素可能会导致这个错误
  • 在批处理文件中,for 可替换参数的百分号必须加倍。将所有%i 更改为%%i
  • 如果您阅读了FOR 命令的帮助,第八行说:要在批处理程序中使用 FOR 命令,请指定 %%variable 而不是 %variable。

标签: windows batch-file environment-variables


【解决方案1】:

在 CMD 窗口中,FOR-LOOP 使用单个 % 符号,正如您在问题中列出的那样。

在批处理文件中,FOR-LOOP 使用双 %% 符号。

FOR /F "delims=v tokens=1" %%i IN ("%NUKE_VERSION%") 设置 NUKE_MAJOR=%%i

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2021-12-12
    • 2016-03-29
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多