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

Ugh。

最初の方法(代わりに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これを理解するために一日中過ごす。どうもありがとうございます。私は第1の方法を使用しています。 – ak77

+0

最初の方法を使用している場合、 'number'変数はまったく必要ないことに注意してください。 – jnylen

関連する問題