Uma coisa que você precisa ter cuidado com a configuração de variáveis em lote não é usar espaços desnecessariamente. (Eu não vejo isso na sua pergunta, mas queria falar com ele desde que me peguei fazendo isso enquanto resolvia o problema.) Por exemplo:
set x=123
não é o mesmo que
set x = 123
O primeiro definirá %x% para 123 , enquanto o segundo definirá %x % para 123 . (Observe o espaço após x no nome da variável e outro antes de 123 na definição.)
Outra coisa a ter em conta é que você não pode apenas dizer var=value . Para definir uma variável de ambiente, você deve usar o comando SET .
Assim, a sintaxe adequada para definir uma variável de ambiente que contém um caminho e, em seguida, uma que se expande sobre esse caminho, é a seguinte:
set x=C:\This\is\a\directory
set y=%x%\more\dirs
Você pode então usar o comando SET para verificar o conteúdo dessas variáveis.

SevocêestiverapenasaprendendolinguagensdescriptnoWindows,provavelmenteseriamaisútilparavocêignoraroloteeirdiretoparaoPowerShell.OPowerShellvemdefábricacomoWindowsVistaesuperioretambémestádisponívelparaoXP.VejacomoomesmotrabalhoseriafeitonoPowerShell.
$x='C:\This\is\a\directory'$y="$x\more dirs"
(Observação: há um motivo para as aspas duplas terem sido usadas ao definir $y , enquanto aspas simples foram usadas para $x . Nesse caso, poderíamos ter usado para definir $x , mas aspas duplas obrigatório para definir $y , pois precisávamos expandir uma variável. Você aprenderá mais sobre isso enquanto escolhe o idioma.
Depois, para verificar as variáveis, você pode apenas chamá-las diretamente.
O PowerShell também é muito menos sensível ao espaçamento na maioria dos casos.
$x=123
é o mesmo que
$x = 123