При настройке переменных в пакетном режиме нужно соблюдать осторожность, чтобы не использовать ненужные пробелы. (Я не вижу этого в вашем вопросе, но хотел обзвонить это, так как я поймал себя на том, что делаю это во время устранения вашей проблемы.) Например:
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