2013-08-25 13 views
6

Mam tablicę zdefiniowaną jako LIST=(a b c d e). a, b, c, d, e są ustawiane jako zmienne systemowe, np. a=AAA, b=BBB itpJak iterować przez tablicę wsadową dla klucza = pozycja wartości

W skrypcie, chciałbym zrobić dla pętli patrząc jak:

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

Co chcę osiągnąć jest to, że %%i (a) = %%%i% (%a%), które zostaną rozwiązane jako zmiennej systemowej, więc zamiast wyświetlania %a% zostanie rozwiązany jako a=AAA.

Czy masz pojęcie, jak to zrobić w skrypcie wsadowym?

Dzięki!

Odpowiedz

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

powinno rozwiązać problem.

+0

To zadziałało jak urok :) Dziękuję! –

1

Nie było jasne, co chciałeś zrobić. Spróbować i zobaczyć, czy to rozwiąże problem:

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

skrypt drukuje nazwę i odpowiednią wartość wszystkich zmiennych środowiskowych, których nazwiska zostały wymienione w zmiennej LIST.

3

Jest to ta sama odpowiedź Lorenzo Donati, ale w nieco prostszy sposób ...

@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! 
Powiązane problemy