Batch file 延迟变量-批处理中存储的变量名

Batch file 延迟变量-批处理中存储的变量名,batch-file,delayedvariableexpansion,Batch File,Delayedvariableexpansion,我有: 这将输出回声关闭,因为%!第一!%返回为空 如何打印“嘿” 更新并澄清: 下面是我的完整代码,并对我正在尝试做的事情进行了注释 setlocal EnableDelayedExpansion var inLoopVar=hey var first=!inLoopVar! echo %!first!% 而不是ECHO关闭。我正在尝试输出TRUE@ECHO关闭 setlocal EnableDelayedExpansion 设置结果=真 设置输入[0]=+NAME=结果;VARB=秒;VA

我有:

这将输出回声关闭,因为
%!第一!%返回为空

如何打印“嘿”

更新并澄清:

下面是我的完整代码,并对我正在尝试做的事情进行了注释

setlocal EnableDelayedExpansion
var inLoopVar=hey
var first=!inLoopVar!
echo %!first!%
而不是
ECHO关闭。
我正在尝试输出
TRUE

@ECHO关闭
setlocal EnableDelayedExpansion
设置结果=真
设置输入[0]=+NAME=结果;VARB=秒;VARC=秒;VARD=秒;变量=秒;VARF=秒;VARG=秒;
设置长度=1
集合i=0
:循环
如果%i%eq%length%goto:eof
对于(`set INPUT[%i%]`)中的/f“usebackq delims=+tokens=2”%%%j(
电话:sub%%j
)
设置/a i=%i%+1
转到环路
后藤:EOF
:sub
设置“namepart=”
对于(%*)中的%%a,如果已定义,请执行namepart(
设置“Valuepart=!%%a!”
ECHO!namepart!is!valuepart!
设置“namepart=”
)否则(
设置“namepart=%%a”
)
后藤:eof

如果你能解释一下你打算做什么,而不是通过调查你是如何失败的来决定你想做什么,这会有所帮助。

var
更改为
set
。然后卸下
,或最后一行的
%
。@Compo,我更新了问题以澄清。谢谢
@ECHO OFF
setlocal EnableDelayedExpansion
set RESULT=TRUE
set INPUT[0]=+NAME=RESULT; VARB=Second; VARC=Second; VARD=Second; VARE=Second; VARF=Second; VARG=Second;
set length=1
set i=0
:loop
if %i% equ %length% goto :eof
for /f "usebackq delims=+ tokens=2" %%j in (`set INPUT[%i%]`) do (
    set y=%%j
    FOR /f "tokens=1-7 delims=; " %%a IN ("!y!") DO (
       set aaa=%%a
       set testVar=!aaa:~5!
       REM basically testVar resolves to RESULT
       echo !!testVar!!
       REM Above echo prints "RESULT"
       echo %!!testVar!!%
       REM Above echo prints "ECHO is off."
    )
)
set /a i=%i%+1
goto loop