При настройке переменных в пакетном режиме нужно соблюдать осторожность, чтобы не использовать ненужные пробелы. (Я не вижу этого в вашем вопросе, но хотел обзвонить его, поскольку я поймал себя на том, что делаю это при устранении неполадок.) Например:
set x=123
это не то же самое, что
set x = 123
Первый будет установлен %x%в 123, в то время как последний будет установлен %x %в 123. (Обратите внимание на пробел после xв имени переменной и еще один перед 123в определении.)
Еще одна вещь, о которой нужно знать, это то, что ты не можешь просто сказать var=value. Чтобы установить переменную среды, вы должны использовать SETкоманду.
Таким образом, правильный синтаксис для установки переменной среды, которая содержит путь, а затем тот, который расширяет этот путь, выглядит следующим образом:
set x=C:\This\is\a\directory
set y=%x%\more\dirs
Затем вы можете использовать SETкоманду для проверки содержимого этих переменных.

Если вы только изучаете языки сценариев в Windows, возможно, было бы более полезно пропустить пакет и перейти прямо в PowerShell. PowerShell поставляется в стандартной комплектации с Windows Vista и выше, а также доступен для XP. Вот как такая же работа будет выполнена в PowerShell.
$x='C:\This\is\a\directory'
$y="$x\more dirs"
(Примечание: есть причина, по которой двойные кавычки использовались при настройке $y, в то время как одинарные кавычки использовались для $x. В этом случае мы могли бы использовать либо для установки, $xно двойные кавычки были обязательны для установки, $yпоскольку нам нужно было расширить переменную. вы узнаете больше об этом, как вы поднимаете язык.)
Затем, чтобы проверить переменные, вы можете просто вызвать их напрямую.

PowerShell также гораздо менее чувствителен к пробелам в большинстве случаев.
$x=123
такой же как
$x = 123