如何批量迭代数组以获取key = value项

时间:2013-08-25 22:11:23

标签: arrays loops for-loop batch-file

我有一个定义为LIST=(a b c d e)的数组。 a, b, c, d, e被设置为系统变量,例如。 a=AAA, b=BBB等等。

在批处理脚本中,我想做一个for循环看起来像:

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

我想要实现的是%%i (a) = %%%i% (%a%),它将被解析为系统变量,因此它不会显示为%a%,而是会被解析为a=AAA

您是否知道如何在批处理脚本中执行此操作?

谢谢!

3 个答案:

答案 0 :(得分:11)

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

应该解决你的问题。

答案 1 :(得分:3)

这是Lorenzo 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!

答案 2 :(得分: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中列出的所有环境变量的相应值。