首页 > 解决方案 > 批量迭代另一个 for 循环中的数组

问题描述

我想遍历另一个 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 循环以使其正常工作?

j并且k计算正确,但这条线echo %%f - %stats[!j!]% - %stats[!k!]%根本不起作用。

当前结果:

A -  -
B -  -
C -  -

预期结果:

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

标签: arraysbatch-file

解决方案


这是工作代码:

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!]%%但我不知道为什么:如果有人得到答案


推荐阅读