2012-04-03 81 views
2

我正在使用Microsoft Windows XP [版本5.1.2600]如何从windows批处理文件中的动态变量中获取值

试图执行此操作。

尝试动态创建变量,然后在循环中读取该变量的值。

@ECHO off 

SET SQL1=TEST 
SET SQL2=TEST1 
SET SQL3=TEST2 
SET SQL=SQL 
SETLOCAL ENABLEDELAYEDEXPANSION 

SET /A number=0 

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1 
echo !number! 
    echo %SQL%!number! 

) 
endlocal 

Output should be 
1 
test 
2 
test2 
3 
test3 
I am getting 
C:\temp>c.bat 
    1 
    SQL1 
    2 
    SQL2 
    3 
    SQL3 

请帮忙!

回答

3

呃。

第一种方式(请注意,不是你的number变量,它使用的循环计数变量%%A):

@ECHO off 

SET SQL1=TEST 
SET SQL2=TEST1 
SET SQL3=TEST2 

SETLOCAL ENABLEDELAYEDEXPANSION 

SET /A number=0 

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1 
echo !number! 
echo !SQL%%A! 

) 
endlocal 

方式二(难看,但它你想要做什么):

@ECHO off 

SET SQL1=TEST 
SET SQL2=TEST1 
SET SQL3=TEST2 

SETLOCAL ENABLEDELAYEDEXPANSION 

SET /A number=0 

FOR /l %%A IN (1,1,3) DO (

SET /A number = number + 1 
echo !number! 
for %%i in (!number!) do (echo !SQL%%i!) 

) 
endlocal 
+0

OMG ,花一整天的时间来解决这个问题。非常感谢。我正在使用第一种方法。 – ak77 2012-04-03 19:08:31

+0

如果您使用第一种方式,请注意您根本不需要“数字”变量。 – jnylen 2012-04-03 19:23:33

相关问题