-1

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

例如

EXE_PATH_%_1%_%PLATFORM%

因此,当调用批处理文件时,环境变量 _1 和 PLATFORM 展开以生成我要展开的变量名称的命名约定部分

如果我调用echo EXE_PATH_%_1%_%PLATFORM%它会产生我想要扩展的变量的名称

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

我怀疑需要延迟支出,但我不确定

4

1 回答 1

0

你的意思不是很清楚,但这里很可能是你需要的信息:

@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来扩展 value 中的变量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

但我真的不明白为什么要搞得这么复杂。

于 2017-05-13T19:40:03.387 回答