根据Windows批处理文件中的源循环遍历属性

时间:2014-04-26 22:26:46

标签: windows batch-file

我想循环遍历一组数据,并根据我所在的索引循环遍历不同的数据集。

这应该有希望解释我的目标

@echo off

setlocal enableextensions enabledelayedexpansion

set DEVICE_LIST="android-19" "android-18" "android-17"
set android-19="1" "2" "3"
set android-18="4" "5" "6"
set android-17="7" "8" "9"

for %%N in ( %DEVICE_LIST% ) do (
    echo %%N

    for %%A in ( %android-19% ) do (
        echo %%A
    )
)

所以在那个代码块中,输出是

"android-19"
"1"
"2"
"3"
"android-18"
"1"
"2"
"3"
"android-17"
"1"
"2"
"3"

但是想要做的是用设备的名称或索引替换%android-19%,所以输出实际上是

"android-19"
"1"
"2"
"3"
"android-18"
"4"
"5"
"6"
"android-17"
"7"
"8"
"9"

我最初尝试用%%% N%替换%android-19%,但显然这不起作用,但应该让你知道我的目的。

是否可以做这样的事情,或者产生相同结果的事情?

由于

2 个答案:

答案 0 :(得分:0)

好的,所以发布这个问题给了我很多可能的相关问题链接,这实际上帮助我弄明白了。

这只是一个使用正确组合的情况!和第二个for循环中的%。

for %%N in ( %DEVICE_LIST% ) do (
    echo %%N

        for %%A in (  !%%~N! ) do (
            echo %%A
        )
)

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL

set DEVICE_LIST="android-19" "android-18" "android-17"
set android-19="1" "2" "3"
set android-18="4" "5" "6"
set android-17="7" "8" "9"

for %%N in ( %DEVICE_LIST% ) do (
    echo %%N

    for /f "delims=" %%W in ('call echo(%%%%~N%%') do (
        for %%A in (%%W) do (
            echo %%A
    )
    )
)
GOTO :EOF

对我很开心。