我可以根据另一个环境变量定义 Windows(XP)环境变量吗?

我可以根据另一个环境变量定义 Windows(XP)环境变量吗?

我希望定义两个环境变量如下:

PROGRAM_HOME=P:
JAVA_DIR=%PROGRAM_HOME%\Java

显然下面的方法可行:

dir %PROGRAM_HOME%

但是,下面的情况则不然:

dir %JAVA_DIR%

如果我确实希望根据 PROGRAM_HOME 定义 JAVA_DIR,我该怎么办?

编辑:删除 \(这是一个打字错误)

程序主目录=P:\==>程序主目录=P:

答案1

除了 fretje 发现的语法错误之外,如果您希望使这些变量永久存在,那么您需要更改 Windows 环境变量。

这是在控制面板/系统/高级选项卡/环境变量...按钮中完成的。

还有一款不错的小产品,叫快速环境编辑器(捐赠软件)提供了更清晰的用户界面。

编辑

我想我现在明白了您要做什么,但这只能通过编辑注册表来完成。以下 Microsoft 文章解释了要遵循的过程:
如何将环境变量传播到系统

简而言之,对于用户环境变量,您需要转到注册表项 HKEY_CURRENT_USER\Environment,所有这些变量都存储在这里。

您需要添加两个 REG_EXPAND_SZ 类型的变量(在 regedit 中名为“扩展字符串值”)。这是添加此类型的唯一方法,因为 Windows 默认只会添加不可扩展的 REG_SZ 类型。

我刚刚尝试过,效果非常好。

答案2

我认为这是因为您重复了“\”。

当我执行以下操作时:

>set %program_home%=c:\
>set %java_dir%=%program_home%java
>dir %java_dir%

一切正常。

当然还有一个替代方案:

>set %program_home%=c:
>set %java_dir%=%program_home%\java
>dir %java_dir%

您可以通过简单地发出不带参数的命令来验证不同环境变量的值set。然后您会看到您的%java_dir%变量包含c:\\java

答案3

是的,这是一个非常奇怪的行为,我从未发现过相关记录,但这就是它的作用所在。

使用上面的例子,在最后一行的变量上加上引号:

目录“%JAVA_DIR%”

如果有人知道为什么会这样,或者有解释原因的链接就太好了。不过,当引用部分由另一个变量定义的变量时,行为是一致的。

相关内容