2013-08-25 12 views
6

के लिए बैच में सरणी पर पुनरावृति करने के लिए मैं एक सरणी LIST=(a b c d e) के रूप में परिभाषित किया है। a, b, c, d, e सिस्टम चर के रूप में सेट हैं, उदाहरण के लिए। a=AAA, b=BBB, आदिकैसे कुंजी = मान आइटम

एक बैच स्क्रिप्ट में, मैं की तरह लग रही पाश के लिए एक करना चाहते हैं:

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

क्या मैं हासिल करना चाहते हैं कि %%i (a) = %%%i% (%a%) है, जो है, इस प्रकार के बजाय प्रणाली चर के रूप में समाधान हो जाएगा %a% दिखा रहा है, इसे a=AAA के रूप में हल किया जाएगा।

क्या आपको पता है कि कैसे एक बैच लिपि में यह करने के लिए है?

धन्यवाद!

उत्तर

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

आपकी समस्या का समाधान करना चाहिए।

+0

यह एक आकर्षण की तरह काम करता है :) धन्यवाद! –

1

यह बहुत स्पष्ट है कि आप क्या करना चाहते थे नहीं था। प्रयास करें और देखें कि यह आपके समस्या का हल है, तो:

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

स्क्रिप्ट नाम और सभी वातावरण चर जिनके नाम चर LIST में सूचीबद्ध हैं उनसे संबंधित मान प्रिंट करता है।

3

यह लोरेंजो Donati का एक ही जवाब है, लेकिन एक से थोड़ा सरल तरीका था ...

@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! 
संबंधित मुद्दे