Variáveis em um arquivo de lote são, por padrão, expandidas no início da execução do script; você precisa usar a expansão atrasada, que está disponível com o "!" delimitador:
echo Source dir is: !SOURCE_DIR!
Isso só funciona se a expansão atrasada estiver habilitada para o interpretador de comandos, que por padrão é não ; então você precisa ativá-lo ao iniciar o interpretador, usando CMD.EXE /V
.
Você também pode ativá-lo usando esta declaração no seu arquivo de lote:
setlocal ENABLEDELAYEDEXPANSION
Mais informações aqui .