如何将用户定义的环境变量附加到 Windows 7 中的系统变量 PATH?

Mic*_*ott 9 windows-7 environment-variables

我有两个用户定义的变量:

ANT_HOME 设置为 %USERPROFILE%\Developer\Tools\Apache\Apache Ant\apache-ant-1.8.2 JAVA_HOME 设置为 C:\Program Files\Java\jdk1.6.0_23

我想将这些路径附加到 System 变量,以便我可以访问其 bin 文件夹中的可执行文件。我试过

PATH 设置为 [其他路径];%ANT_HOME%\bin;%JAVA_HOME%\bin

但是,这不起作用。当我打开命令提示符并 echo %PATH% 时,用户变量未扩展。所以路径只显示文字, ;%ANT_HOME%\bin;%JAVA_HOME%\bin

我似乎记得这在我的旧 Windows XP 系统上运行良好。如何在 Windows 7 上进行设置?

Tob*_*tat 5

更新 NO.2 - 现在回到实际问题:为什么嵌套的、用户创建的变量无法扩展?

在 Windows 中存在一些关于变量扩展的一般问题。我已经遇到了同样的问题,并没有发现明确的、可重现的情况 - 扩展失败的递归级别不一致,特殊字符似乎没有发挥作用等。

我发现唯一可行的解​​决方法是按递归级别添加变量递归级别。这意味着:尝试删除要相互嵌套的所有变量(包括从 PATH 调用到用户定义的变量),然后从头开始。定义你的基本变量(等等。ANT-HOME),提交,检查它是否被扩展,如果是,继续下一级提交,检查......你明白了。

更新的答案 - 使用 CLI 和 GUI 定义永久环境变量-向下滚动以获取原始答案

图形界面方法:

在 Windows 7 上,只需在 META-Prompt 中键入“system”,您就会看到一个条目“Edit the System Environment Variables”。从那里,单击“环境变量”。在那里,您可以编辑系统变量 PATH(底部列表)或向用户环境变量添加/编辑新的 PATH 变量。

命令行方法:

要永久更改环境变量,您必须在 Windows 命令行中使用 SETX 命令。与其他版本的 Windows 不同,它是 Windows 7 内置的。它的语法与 SET 有很大不同,但它也很强大。不过,您必须小心一点,使用 SETX 很容易弄乱您的变量。

  • 默认情况下,您更改用户变量。您可以拥有一个与系统 PATH 变量愉快共存的 PATH 用户环境变量。如果您还没有定义它,请输入:SETX PATH yourpath

  • 您还可以向系统变量 PATH 添加一个值。为此,您首先需要调出具有管理员权限的命令行。为此,请点击 Meta(Windows) 键,输入cmd并点击CTRL+ SHIFT+ENTER并确认 UAC 对话框。

要将新值添加到路径,您现在可以输入

setx path "%path%;yournewpath" /m
Run Code Online (Sandbox Code Playgroud)

遵循该语法很重要!如果您不首先包含 %path%,则路径的所有现有值都将丢失并仅替换为您的新路径。 最后的 /m 开关设置系统环境中的变量。

请注意,您必须打开一个新命令行才能使用新变量。

TechNet上还有一个关于 SETX完整参考

旧答案 命令 SET 仅在当前命令行会话期间更新变量。

向变量添加值的正确语法是“set [variable]=%[variable]%;[new value]”

注意等号的左边,你必须省略百分号!

来源:Windows Server 的 TechNet 命令行参考


Mic*_*ott 1

2007 年的一篇 Microsoft 支持文章(编号 329308)描述了 Shell32.dll 中的一个错误,这就是导致此问题的原因。解决方案是在用户变量列表中添加一个PATH变量,该变量设置为

%ANT_HOME%\bin;%JAVA_HOME%\bin
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题。我不喜欢只为我的用户设置它,但不知何故,我的系统出现了这个旧错误的症状,而且我还没有看到其他更好的答案。