2017-03-07 96 views
0

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

的环境变量对系统设置:

NUKE_VERSION = 10.0v5

到应用程序的路径:

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

下面的代码工作正常,在命令提示符:

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 was unexpected at this time.

对发生了什么有什么见解?我可以在python中做这个,但是我不应该这么简单,对吧?提前谢谢了。

+0

什么是您的bat文件是什么样子?当你运行一个bat文件时,它通常会启动它自己的命令环境,它可能或者可能没有事先声明的变量,所以,有几个因素可能导致这个错误 –

+2

在一个批处理文件中,可更换参数必须加倍。用'%% i'更改所有'%i' – Aacini

+0

如果您阅读FOR命令的帮助,第e行说:**要在批处理程序中使用FOR命令,请指定%%变量,而不是%变量。** – Squashman

回答

0

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

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

FOR/F “delims = V令牌= 1” %%我( “%NUKE_VERSION%”)DO设置NUKE_MAJOR = %%我