2013-08-25 3 views
6

Ich habe ein Array als LIST=(a b c d e) definiert. Die a, b, c, d, e sind als Systemvariablen eingestellt, z. a=AAA, b=BBB usw.Wie iterieren über Array im Batch für Schlüssel = Wert Element

In einem Batch-Skript, würde Ich mag eine for-Schleife tun, wie die Suche:

for %%i in %LIST% do echo %%i=%%%i% (unfortunately, this doesn't work) 

Was ich will erreichen, dass %%i (a) = %%%i% (%a%), die als Systemvariable gelöst werden, so dass statt von %a% wird es als a=AAA aufgelöst werden.

Haben Sie eine Idee, wie man es in einem Batch-Skript macht?

Danke!

Antwort

11
for %%i in %LIST% do CALL echo %%i=%%%%i%% 

soll Ihr Problem lösen.

+0

Das funktionierte wie ein Charme :) Danke! –

1

Es war nicht sehr klar, was Sie tun wollten. Versuchen Sie, und sehen, ob dies Ihr Problem löst:

@echo off 
setlocal enabledelayedexpansion 
set LIST=(a b c d e) 
set a=value of A 
set b=value of B 
set c=value of C 
set d=value of D 
set e=value of E 

:: deletes the parentheses from LIST 
set _list=%LIST:~1,-1% 
for %%G in (%_list%) do (
    set _name=%%G 
    set _value=!%%G! 
    echo !_name! = !_value! 
) 

das Skript gibt den Namen und den entsprechenden Wert aller Umgebungsvariablen, deren Namen in den Variablen LIST aufgeführt sind.

3

Dies ist die gleiche Antwort von Lorenzo Donati, aber in einem etwas einfacheren Weg ...

@echo off 
setlocal enabledelayedexpansion 
set LIST=(a b c d e) 
set a=value of A 
set b=value of B 
set c=value of C 
set d=value of D 
set e=value of E 

for %%G in %LIST% do echo %%G = !%%G! 
Verwandte Themen