2017-08-16 76 views
-1

我有:变量名 - 批次

setlocal EnableDelayedExpansion 
var inLoopVar=hey 
var first=!inLoopVar! 
echo %!first!% 

此输出ECHO OFF因为%!first!%返回为空。

如何打印“嘿”

更新和澄清:

这里是我的全部代码的什么,我试图做

@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 

而不是ECHO is off.评论我我试图输出TRUE

+1

将'var'更改为'set'。然后从最后一行删除'!'或'%'。 – Compo

+0

@Compo,我更新了问题以澄清。谢谢! –

回答

0
@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 (
    CALL :sub %%j 
) 
set /a i=%i%+1 
goto loop 
GOTO :EOF 

:sub 
SET "namepart=" 
FOR %%a IN (%*) DO IF DEFINED namepart (
SET "Valuepart=!%%a!" 
ECHO !namepart! is !valuepart! 
SET "namepart=" 
) ELSE (
SET "namepart=%%a" 
) 
GOTO :eof 

如果你想解释你打算做什么,而不是通过检查你未能做什么来确定你想要做什么,那么这将对你有所帮助。