2013-08-25 12 views
6

Ho un array definito come LIST=(a b c d e). I valori a, b, c, d, e sono impostati come variabili di sistema, ad es. a=AAA, b=BBB, eccCome iterare su array in batch per chiave = valore articolo

In uno script batch, vorrei fare un ciclo che sembra:

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

Quello che voglio ottenere è che %%i (a) = %%%i% (%a%), che verrà risolto come variabile di sistema, in tal modo, invece di mostrare %a%, sarà risolto come a=AAA.

Avete qualche idea su come farlo in uno script batch?

Grazie!

risposta

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

dovrebbe risolvere il problema.

+0

Questo ha funzionato come un fascino :) Grazie! –

1

Non era molto chiaro cosa volevi fare. Provare e vedere se questo risolve il problema:

@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! 
) 

lo script stampa il nome e il corrispondente valore di tutte le variabili di ambiente i cui nomi sono elencati nella variabile LIST.

3

Questa è la stessa risposta di Lorenzo Donati, ma in un modo un po 'più semplice ...

@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! 
Problemi correlati