我希望定义两个环境变量如下:
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%”
如果有人知道为什么会这样,或者有解释原因的链接就太好了。不过,当引用部分由另一个变量定义的变量时,行为是一致的。