Geralmente, o Windows processa variáveis de ambiente no logon em ordem alfabética. Quaisquer variáveis aninhadas no lado direito serão expandidas se já estiverem definidas. Se não estiver definido, a referência da variável aninhada provavelmente será armazenada "como está", completa com sinais de porcentagem.
Como %WORK_HOME%
está muito abaixo do alfabeto, não é definido quando essas outras variáveis são processadas.
A única solução que sei é usar nomes de variáveis que são alfabéticos por ordem de expansão.
Parece haver alguma tentativa no Windows 7 de melhorar isso, mas não parece ser confiável o suficiente para confiar:
>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]
>