arrays - 批量迭代另一个 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%
解决方案
这是工作代码:
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!]%%
但我不知道为什么:如果有人得到答案
推荐阅读
- android - 如何完成活动?(喷气背包导航)
- sql-server - Ansible 中的 SQL Server 数据库查询
- javascript - 使用 JavaScript 绘制 d3.js 图表时出现 Socket.IO 连接问题
- mysql - MySQL ALTER TABLE 在小表中花费很长时间
- odbc - 使用雪花数据库作为 SSAS(SQL Server 分析服务)数据源?
- jenkins - 跨 groovy 脚本文件共享设置映射
- java - 创建依赖选择
- python - 如何在时间日期 Pandas 数据帧中的指定小时之前计算值的数量
- c++ - 您如何使用 Pthread 并行化图像翻转?
- java - 破解 Vigenere 只知道密钥长度