Parece haver um bug com variáveis de ambiente aninhadas no Windows 7 (talvez outras versões também, não tenho certeza) onde, se o nome da variável de nível superior vier antes do nome da variável aninhada em ordem alfabética, ela ganhou ' t ser expandido.
No seu caso, a variável de nível superior M2
vem antes da variável aninhada M2_HOME
quando classificada em ordem alfabética. Se você alterar M2
para algo que vem depois de M2_HOME
(por exemplo, M3
), verá que ele funciona conforme o esperado.