【问题标题】:How do you include %ProgramFiles% in PATH?如何在 PATH 中包含 %ProgramFiles%?
【发布时间】: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


【解决方案1】:

在系统级别从控制面板系统小程序手动编辑 PATH 时,您无法扩展 %ProgramFiles%

但您当然可以在 BAT 文件中使用 %ProgramFiles%。试试看

PATH %ProgramFiles%;%PATH%

如果您想从 BAT 文件中永久更改 PATH,那么这是另一个问题,已在此处回答 Permanently altering a user's %PATH% environment variable via batch or Python

【讨论】:

  • 是的,你可以。您不能做的是使用%programfiles% 变量在系统级别更改它。但是,如果在 user 级别,从控制面板系统定义一个名为 path 的变量,其值为 %path%;%programfiles%,并打开一个新的 cmd 实例,则路径将包含正确的引用到程序文件目录。
  • 哦,不知道用户级别的这种不同行为。已编辑。
  • 我正在寻找永久更改,但使用 SETX(如您链接到的解决方案中所建议的)只是将文字 %programfiles% 粘贴到路径中。最终它并没有解决我的问题。
  • ?) 它对我有用。无论是在命令行中还是在 BAT 中。你能发布你的实际代码吗?
  • 在我调用的 cmd 文件中: setx path "%ProgramFiles%\myfilepath" >> "%TEMP%\batchlog.txt 我知道,它只会修改用户路径(因为我去掉 -m 标志)。
猜你喜欢
  • 2019-02-10
  • 2014-04-21
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多