Windows批处理文件 - 将环境变量插入可执行调用

5

如果我在其他帖子中忽略了此问题,请原谅,但我找不到它(无论是在这里还是互联网上的任何地方)。

在Windows(XP)中,我设置了以下全局环境变量,方法是右键单击我的电脑,然后选择属性 > 高级 > 环境变量

CUSTOM_HOME = c:\some\folder\path

我该如何在批处理文件中插入一个字符串?我需要将subfolder\program.exe添加到路径中,以便在批处理文件中得到c:\some\folder\path\subfolder\program.exe。我尝试了以下方法:

%CUSTOM_HOME%\subfolder\program.exe

但是当我执行批处理文件时,输出仅显示:
> \subfolder\program.exe
> The system cannot find the path specified.

如何正确地编写语法,以便.exe文件的完整路径是正确的?

3个回答

6

这是正确的语法,但是如果custom_home路径包含空格,则需要在整个路径周围添加引号。

如果找不到它,那么这意味着全局环境变量拼写错误或者不可用。您可以使用SET CUSTOM_HOME在命令行上进行测试。


抱歉:)对此有点歉意。 - competent_tech
我可以在命令行中执行 echo %CUSTOM_HOME%set CUSTOM_HOME 命令,它们都能正常工作。但是在批处理文件中添加引号并不能解决问题。就好像环境变量没有被加载到脚本中一样。我不需要重新启动计算机之类的操作来使它们生效,对吗? - istrasci
你是想通过交互式执行还是通过任务计划程序执行它?如果是一个正在执行的服务,它们可能没有捕捉到全局环境设置的更改,因此需要重新启动。 - competent_tech
是的,重新启动似乎起作用了。有没有一种全局“重新加载”环境变量的方法,当它们被更改时,而不必重新启动?那似乎很愚蠢。 - istrasci
遗憾的是,我还没有找到一个解决方法。有时,如果是需要新值的服务,重新启动服务可能会起作用,但大多数情况下我只能重启电脑。 - competent_tech

4
这里的问题在于等号旁边的空格。在批处理中,SET命令中变量名是等号之前的完整字符串(包括空格),变量值是等号之后的完整字符串(包括等号)。
这个命令:
SET CUSTOM_HOME = c:\some\folder\path

将变量"CUSTOM_HOME"的值设置为"c:\some\folder\path",您可以通过以下方式进行测试:

ECHO %CUSTOM_HOME %

只需将等号旁边的空格去掉即可...

这是一个对其他可能查看此线程的人有帮助的好评论,但那不是问题所在。我写了 CUSTOM_HOME = c:\some\folder\path 来表示概念上相等。我没有在脚本中设置该值。我通过右键单击 我的电脑,然后执行 属性 > 高级 > 环境变量(或者类似的步骤;我现在在 OSX 上)来设置它的值。我会编辑原始帖子。 - istrasci

0
你的语法是正确的。我想你已经打开了命令提示符并设置了环境变量。现在你可能正在相同的命令提示符上执行批处理文件。
由于这样可能无法工作。
尝试关闭现有的命令提示符并重新运行它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接