Развернуть переменную среды из имени сгенерированной во время выполнения переменной
Я создал командный файл, который изменяет PATH в зависимости от того, какое имя компилятора я ему передаю. Я также хочу выбрать из числа этих переменных во время выполнения, у меня есть другой пакетный файл, в котором я генерирую имя соответствующей переменной среды для просмотра, но я не вижу, как развернуть сгенерированную переменную
например
EXE_PATH_%_1%_%PLATFORM%
поэтому, когда пакетный файл называется переменными среды _1, PLATFORM расширяется, чтобы создать разделы соглашения об именах для имени переменной, которую я хочу раскрыть
если я позвоню echo EXE_PATH_%_1%_%PLATFORM%
это даст имя переменной, которую я хочу расширить
Как перейти от сгенерированного имени к содержимому переменной среды с этим именем?
Я подозреваю, что требуется отсрочка, но я не уверен
1 ответ
Не совсем понятно, что вы имеете в виду, но, скорее всего, вот какая информация вам нужна:
@echo off
setlocal
set "_1=VSC"
set "PLATFORM=x64"
set "EXE_PATH_%_1%_%PLATFORM%=%ProgramFiles%\VSC\bin"
set "EXE_PATH_NAME=EXE_PATH_%%_1%%_%%PLATFORM%%"
set "EXE_PATH_NAME=%EXE_PATH_NAME%"
set EXE_PATH_
endlocal
Этот пакетный код выводит, например:
EXE_PATH_NAME=EXE_PATH_%_1%_%PLATFORM%
EXE_PATH_VSC_x64=C:\Program Files\VSC\bin
Необходимо использовать CALL для расширения переменных в значение EXE_PATH_NAME
т.е. используйте этот пакетный код с еще одной строкой в соответствии с комментарием JosefZ, который устанавливает переменную EXE_PATH_VALUE
:
@echo off
setlocal
set "_1=VSC"
set "PLATFORM=x64"
set "EXE_PATH_%_1%_%PLATFORM%=%ProgramFiles%\VSC\bin"
set "EXE_PATH_NAME=EXE_PATH_%%_1%%_%%PLATFORM%%"
call set "EXE_PATH_NAME=%EXE_PATH_NAME%"
call set "EXE_PATH_VALUE=%%EXE_PATH_%_1%_%PLATFORM%%%"
set EXE_PATH_
endlocal
Этот пакетный код с дополнительным call
выходы к примеру:
EXE_PATH_NAME=EXE_PATH_VSC_x64
EXE_PATH_VALUE=C:\Program Files\VSC\bin
EXE_PATH_VSC_x64=C:\Program Files\VSC\bin
Но я действительно не понимаю, почему это так сложно.