Windows 7可以双重嵌套环境变量吗?

Windows 7可以双重嵌套环境变量吗?

在 GUI 中:

WORK_HOME=D:\work
LOG_HOME=%WORK_HOME%\logs
FOO_LOG_HOME=%LOG_HOME%\foo

在命令行上:

echo %LOG_HOME%
D:\work\logs

echo %FOO_LOG_HOME%
%LOG_HOME%\foo

唯一的区别是 %FOO_LOG_HOME% 中使用的变量使用另一个变量(%LOG_HOME%),该变量也使用另一个变量(%WORK_HOME%),而 %LOG_HOME% 使用设置为文字值(%WORK_HOME%)的变量。

有什么方法可以克服这个限制吗?

答案1

通常,Windows 在登录时按字母顺序处理环境变量。如果已设置,则嵌套在右侧的任何变量都将展开。如果未设置,则嵌套变量引用可能会“按原样”存储,并带有百分号。

由于%WORK_HOME%在字母表的位置很靠后,因此在处理其他变量时没有定义它。

我知道的唯一解决方法是使用按扩展顺序按字母顺序排列的变量名。

Windows 7 确实试图对此进行一些改进,但似乎不够可靠:

>REG QUERY HKEY_CURRENT_USER\Environment | FINDSTR AUSR
    AUSRA    REG_SZ    alpha
    AUSRB    REG_EXPAND_SZ    bravo %AUSRA%
    AUSRC    REG_EXPAND_SZ    charlie %AUSRB%
    AUSRD    REG_EXPAND_SZ    delta %AUSRC%
    AUSRI    REG_EXPAND_SZ    india %AUSRJ%
    AUSRJ    REG_EXPAND_SZ    juliet %AUSRK%
    AUSRK    REG_EXPAND_SZ    kilo %AUSRL%
    AUSRL    REG_SZ    lima

>SET AU
AUSRA=alpha
AUSRB=bravo alpha
AUSRC=charlie bravo alpha
AUSRD=delta charlie bravo alpha
AUSRI=india %AUSRJ%
AUSRJ=juliet %AUSRK%
AUSRK=kilo lima
AUSRL=lima

>ver

Microsoft Windows [Version 6.1.7601]

>

相关内容