2013-08-25 14 views
6

Tôi có một mảng được xác định là LIST=(a b c d e). a, b, c, d, e được đặt làm biến hệ thống, ví dụ: a=AAA, b=BBB vvCách lặp qua mảng theo lô cho mục khóa = giá trị

Trong một kịch bản hàng loạt, tôi muốn làm một vòng lặp for trông như:

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

Những gì tôi muốn đạt được là %%i (a) = %%%i% (%a%), mà sẽ được giải quyết như biến hệ thống, do đó thay vì hiển thị %a%, nó sẽ được giải quyết là a=AAA.

Bạn có biết cách làm điều đó trong tập lệnh theo lô không?

Cảm ơn!

Trả lời

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

nên giải quyết vấn đề của bạn.

+0

Điều này làm việc như một nét duyên dáng :) Cảm ơn bạn! –

1

Không rõ bạn muốn làm gì. Hãy thử và xem có giải quyết được vấn đề của bạn:

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

kịch bản in tên và giá trị tương ứng của tất cả các biến môi trường có tên được liệt kê trong biến LIST.

3

Đây là câu trả lời tương tự của Lorenzo Donati, nhưng theo một cách hơi đơn giản ...

@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! 
Các vấn đề liên quan