Sådan får du værdien fra en dynamisk variabel i Windows-batchfil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Microsoft Windows XP [[Version 5.1.2600]]


Forsøger at gøre dette.


Forsøger at skabe variablen dynamisk og derefter læse værdien ud af denne variabel i en loop.


@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:	emp>c.bat
  1
  SQL1
  2
  SQL2
  3
  SQL3


Hjælp venligst!

Bedste reference


UH.


Første måde (bemærk at i stedet for din number variabel, bruger den loop-tællervariablen \%\%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


Anden måde (grim, men det gør hvad du vil):


@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