2012-04-03 77 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

相關問題