2012-04-03 3 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 , потратьте весь день, чтобы понять это. Спасибо большое. Я использую первый способ. – ak77

+0

Если вы используете первый способ, обратите внимание, что вам не нужна ваша переменная 'number'. – jnylen

Смежные вопросы