【发布时间】:2013-12-03 03:42:29
【问题描述】:
根据 this post ,不可能在路径变量中包含 %ProgramFiles%,因为 Windows 环境变量按字母顺序解析。
但是,我需要能够从批处理文件中获取 PATH 中程序文件的正确位置(它可以扩展,我只是无法将驱动器号硬编码到批处理文件中,因为它需要可移植) .我该怎么做?
编辑:针对以下一些 cmets,以下是一些附加信息:
- 对 PATH 的更改必须是永久性的。
-SETX 似乎只是将文字 %programfiles% 粘贴在路径变量中。
【问题讨论】:
-
您正在尝试做什么并不明显 - 什么不起作用/您如何使用
%ProgramFiles%变量? -
当您说
windows environment variables get resolved in alphabetical order时,它们按字母顺序列出的唯一位置是执行set命令以简单地列出变量时。使用环境变量进行 alpha 排序没有其他意义。 -
@foxidrive:不,尝试在系统级别设置两个变量
a,定义为%systemroot%,b定义为%a%。保存,打开 cmd 并尝试SET。两个变量具有相同的值。现在反转,a定义为%b%和b定义为%systemdrive%。失败 -
@MCND 你有脚本来说明你想要指出的内容吗?
-
@foxidrive:你是对的。问题的根源在于您不能根据另一个仍然没有值的变量来设置变量的值。它不能在脚本或系统中完成。由于在启动时会话环境变量定义是按字母顺序从注册表中检索的,变量
A不能具有从B派生的值,它仍然没有值。所有的问题都是变量初始化的顺序。在脚本中,您可以控制它。在系统引导中,没有。不是PATH语句的问题,而是PATH变量初始声明的问题。
标签: windows batch-file environment-variables