Windows 从运行时生成的变量名展开环境变量

Windows 从运行时生成的变量名展开环境变量,windows,batch-file,environment-variables,delayedvariableexpansion,Windows,Batch File,Environment Variables,Delayedvariableexpansion,我已经创建了一个批处理文件,它根据我传递给它的编译器名称来改变路径。我还想在运行时从这些变量中进行选择,我有另一个批处理文件,其中生成了要查看的适当环境变量的名称,但我看不到如何扩展生成的变量 e、 g 因此,当批处理文件被称为环境变量_1时,平台将展开,以生成我要展开的变量名称命名约定的部分 如果我调用echo EXE\u PATH\uu%\u 1%\uu%PLATFORM%这将生成我要展开的变量的名称 如何从生成的名称转到具有该名称的环境变量的内容 我怀疑需要延迟扩展,但我不确定您的意思是否

我已经创建了一个批处理文件,它根据我传递给它的编译器名称来改变路径。我还想在运行时从这些变量中进行选择,我有另一个批处理文件,其中生成了要查看的适当环境变量的名称,但我看不到如何扩展生成的变量

e、 g

因此,当批处理文件被称为环境变量_1时,平台将展开,以生成我要展开的变量名称命名约定的部分

如果我调用
echo EXE\u PATH\uu%\u 1%\uu%PLATFORM%
这将生成我要展开的变量的名称

如何从生成的名称转到具有该名称的环境变量的内容


我怀疑需要延迟扩展,但我不确定您的意思是否明确,但以下是您最需要的信息:

@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
EXE_PATH_NAME=EXE_PATH_VSC_x64
EXE_PATH_VALUE=C:\Program Files\VSC\bin
EXE_PATH_VSC_x64=C:\Program Files\VSC\bin
有必要使用CALL展开
EXE\u PATH\u NAME
值中的变量,即根据设置变量
EXE\u PATH\u值的注释,将此批处理代码与多行一起使用

@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
此批处理代码带有附加的
调用
输出,例如:

EXE_PATH_NAME=EXE_PATH_%_1%_%PLATFORM%
EXE_PATH_VSC_x64=C:\Program Files\VSC\bin
EXE_PATH_NAME=EXE_PATH_VSC_x64
EXE_PATH_VALUE=C:\Program Files\VSC\bin
EXE_PATH_VSC_x64=C:\Program Files\VSC\bin

但我真的不明白为什么要把这件事弄得这么复杂。

调用echo%%EXE\u PATH\u%%\ u 1%\u%PLATFORM%%
调用echo EXE\u PATH%%\u%%\ u 1%\u%PLATFORM%%
。这对我来说有点不干净。@JosefZ第一个有效