【问题标题】:Windows Batch Files - Interpolate environment variables into executable callWindows 批处理文件 - 将环境变量插入可执行调用
【发布时间】:2011-11-28 02:28:32
【问题描述】:

抱歉,如果我在另一个线程中忽略了这个问题,但我无法找到它(这里或互联网上的任何地方)。

在 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 的完整路径是正确的?

【问题讨论】:

    标签: windows file batch-file environment-variables interpolation


    【解决方案1】:

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

    如果未找到,则表示全局 env 变量拼写错误或不可用。您可以在命令行中使用SET CUSTOM_HOME 进行测试。

    【讨论】:

    • 对不起 :)。有点。
    • 我可以从命令行执行echo %CUSTOM_HOME%set CUSTOM_HOME,它们都可以工作。但是添加引号对批处理文件没有帮助。这就像环境变量没有被加载到脚本或其他东西中。我不需要重新启动或其他东西来使它们“生效”,对吗?
    • 您是尝试交互执行还是通过任务调度程序执行?如果它是执行执行的服务,它们可能没有接收到对全局环境设置的更改,因此需要重新启动。
    • 是的,重启似乎有效。当它们被更改而无需重新启动时,是否有全局“重新加载”环境变量?这似乎很愚蠢。
    • 遗憾的是,我还没有找到。有时,如果是需要新值的服务,重启服务就可以了,但大多数时候我只是重启。
    【解决方案2】:

    这里的问题是等号以外的空格。在批处理SET命令中,变量名是等号之前的完整字符串(包括空格),变量值是等号之后的完整字符串(包括等号)。

    这个命令:

    SET CUSTOM_HOME = c:\some\folder\path
    

    将值“c:\some\folder\path”分配给“CUSTOM_HOME”变量。你可以这样测试:

    ECHO %CUSTOM_HOME %
    

    去掉等号以外的空格...

    【讨论】:

    • 对可能查看此线程的其他人的好评论,但这不是问题。我写了CUSTOM_HOME = c:\some\folder\path 来表示概念上的平等。我没有在脚本中设置值。我通过右键单击 My Computer,然后执行 Properties > Advanced > Environment Variables(或任何顺序;我现在在 OSX 中)来设置它。我将编辑 OP。
    【解决方案3】:

    你的语法是正确的。我想你已经打开了命令提示符并设置了环境变量。现在您可能正在同一个命令提示符上执行批处理文件。

    因此它可能无法正常工作。

    尝试关闭现有的命令提示符并运行它。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2016-04-17
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多