Windows 7 环境变量名称是否有规则?

Chu*_*k L 4 windows windows-7 environment-variables

在我的 Windows 7 计算机上,我创建了一些自定义用户环境变量(右键单击计算机 > 属性 >“高级系统设置”>“环境变量...”>“新建...”用于“...的用户变量” ) 但是当我在命令提示符下回显它们时,它似乎无法识别。例如,这就是我所拥有的:

UTILS_HOME  C:\myUtils
UTILS_WILDFLY  %UTILS_HOME%\wildflyUtils
Run Code Online (Sandbox Code Playgroud)

我将两者都添加到我的用户变量中的 PATH 变量中,如下所示:

PATH  %UTILS_HOME%;%UTILS_WILDFLY%
Run Code Online (Sandbox Code Playgroud)

当我回显 PATH 时,我得到了这个:

C:\mytils;%UTILS_WILDFLY%
Run Code Online (Sandbox Code Playgroud)

我希望它会扩展 UTILS_WILDFLY 但不会。现在,如果我将 UTILS_WILDFLY 的名称更改为 JBOSS_8,当我回显路径时,它将被扩展。我已经尝试了几个名称进行测试,但不明白为什么有些会扩展而有些则不会。当它们不展开时,我无法在命令行上访问该文件夹中的脚本。

是否有一些我不知道的命名环境变量的规则,或者这是它的工作方式,我必须反复试验,直到找到一个有效的方法?

尝试不同的名称时没有错别字。我为变量创建了名称,并将其剪切并粘贴到 PATH 变量中以排除这种情况。

Har*_*ton 6

问题是您正在使用递归扩展,即 PATH 引用 UTILS_WILDFLY,它本身引用 UTILS_HOME。

递归扩展并不总是有效;大概这意味着它不受支持,所以不能保证它会工作 - 这意味着你不应该使用它 - 但在实践中它有时确实有效,因此会造成混淆。

具体来说,在 Windows 7 上,当且仅当递归扩展中间的变量 (UTILS_WILDFLY) 出现在注册表变量列表中的扩展变量 (PATH) 之前,它才起作用。碰巧的是,环境变量是按字母顺序排列的。

在你的情况下,

  • UTILS_WILDFLY > PATH,所以这不起作用。

  • JBOSS_8 < PATH,就是这样。

PATI 不起作用,但 PATG 会起作用。

  • 检查`reg 查询“HKLM\Software\Microsoft\Windows NT\CurrentVersion”/v *`。你有字母顺序吗?`reg` 直接从 [`RegEnumValue`](https://msdn.microsoft.com/en-us/library/windows/desktop/ms724865%28v=vs.85%29.aspx) 转储订单,为此文档通知“[b]因为值没有排序,任何新值都将具有任意索引。这意味着该函数可以以任何顺序返回值”。实际上是插入顺序。删除所有现有的字符串值并重新插入新值正是环境变量对话框所做的。 (4认同)