批量迭代另一个for循环内的数组

时间:2018-09-05 13:06:12

标签: arrays batch-file

我想遍历另一个for循环内的数组。

我使用! %%%进行了所有尝试,可以迭代i,但是无法使用此array访问我的i

这是我想使其起作用的代码:

rem stats.json contains -> { 1: "10%", 2: "20%", 3: "30%", 4: "40%", 5: "50%", 6: "60%" }
for /f "delims=" %%x in (stats.json) do set json=%%x
set json=%json:"=%
set "json=%json:~2,-2%"
set "json=%json:: =]=%"
set "stats[%json:, =" & set "stats[%"

echo stats[1]=%stats[1]%
echo stats[2]=%stats[2]%
echo stats[3]=%stats[3]%
echo stats[4]=%stats[4]%
echo stats[5]=%stats[5]%
echo stats[6]=%stats[6]%

set i=1
for %%f in (A, B, C) do (
 set /a j=!i!*2-1
 set /a k=!i!*2
 echo %%f - %stats[!j!]% - %stats[!k!]%
 set /a i+=1
)

有人知道如何修改for循环以使其正常工作吗?

jk的计算正确,但是行echo %%f - %stats[!j!]% - %stats[!k!]%根本不起作用。

当前结果:

A -  -
B -  -
C -  -

预期结果:

A - 10% - 20%
B - 30% - 40%
C - 50% - 60%

2 个答案:

答案 0 :(得分:1)

这是工作代码:

rem stats.json contains -> { 1: "10%", 2: "20%", 3: "30%", 4: "40%", 5: "50%", 6: "60%" }
for /f "delims=" %%x in (stats.json) do set json=%%x
set json=%json:"=%
set "json=%json:~2,-2%"
set "json=%json:: =]=%"
set "stats[%json:, =" & set "stats[%"

echo stats[1]=%stats[1]%
echo stats[2]=%stats[2]%
echo stats[3]=%stats[3]%
echo stats[4]=%stats[4]%
echo stats[5]=%stats[5]%
echo stats[6]=%stats[6]%

setlocal EnableDelayedExpansion
set /a i=1
for %%f in (A, B, C) do (
set /a j=!i!*2-1
set /a k=!i!*2
call echo(%%f - %%stats[!j!]%% - %%stats[!k!]%%
set /a i+=1
)
endlocal

我不得不将echo %%f - %stats[!j!]% - %stats[!k!]%替换为call echo(%%f - %%stats[!j!]%% - %%stats[!k!]%%,但我不知道为什么:如果有人得到了答案

答案 1 :(得分:1)

这是我要这样做的方式:

@echo off
setlocal EnableDelayedExpansion

rem stats.json contains -> { 1: "10%", 2: "20%", 3: "30%", 4: "40%", 5: "50%", 6: "60%" }
for /f "delims=" %%x in (stats.json) do set "json=%%x"
set json=%json:"=%
set "json=%json:~2,-2%"
set "json=%json:: =]=%"
set "stats[%json:, =" & set "stats[%"

SET STATS

set /a i=1
for %%f in (A, B, C) do (
   set /a j=i*2-1, k=i*2
   for /F "tokens=1,2" %%j in ("!j! !k!") do echo %%f - !stats[%%j]! - !stats[%%k]!
   set /a i+=1
)

此代码运行速度更快。有关更多详细信息,请参见Arrays, linked lists and other data structures in cmd.exe (batch) script