Обычно 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]
>