Arrays for循环中数组中的索引[输出错误][批处理]
我试图以2的步长遍历数组。我想要的是在一次迭代中获取2个值,然后对其进行处理(例如,在EveryLop中需要处理i和i+1索引)。为此,我写了以下代码片段Arrays for循环中数组中的索引[输出错误][批处理],arrays,batch-file,cmd,Arrays,Batch File,Cmd,我试图以2的步长遍历数组。我想要的是在一次迭代中获取2个值,然后对其进行处理(例如,在EveryLop中需要处理i和i+1索引)。为此,我写了以下代码片段 for /l %%a in (1,2,!counter!) do ( set username=!array[%%a]! set /a nextindex=%%a+1 echo username:!username! index: !nextindex! value [!array[%nextindex%]!] )
for /l %%a in (1,2,!counter!) do (
set username=!array[%%a]!
set /a nextindex=%%a+1
echo username:!username! index: !nextindex! value [!array[%nextindex%]!]
)
当我运行这段代码时,我得到的输出是:
username:FT_SelfAdmin01 index: 2 value []
username:FT_SelfAdmin01 index: 4 value []
username:FT_SelfAdmin01 index: 6 value []
当我在echo on模式下运行上述批处理时,我得到以下结果
(
set username=!array[1]!
set /a nextindex=1+1
echo username:!username! index: !nextindex! value [!array[nextindex]!]
)
当我换这行的时候
echo用户名:!用户名!索引:!下一个索引!值[!数组[%nextindex%]!]
到此行echo用户名:!用户名!索引:!下一个索引!值[!数组[!nextindex!]!]
我得到这个(作为代码的回音)
echo用户名:!用户名!索引:!下一个索引!值[!数组[!nextindex!]!]
和输出更改(我这里只给出一行)
用户名:FT\u SelfAdmin01索引:4值[nextindex]
我无法理解发生了什么事?原始行
echo username:!username! index: !nextindex! value [!array[%nextindex%]!]
这将不起作用,因为在分析%%a块的完整时,替换了未使用延迟扩展的%nextindex%
变量引用
更改线路,现在延迟扩展
echo username:!username! index: !nextindex! value [!array[!nextindex!]!]
^........^ ^.........^ ^......^ ^.^
解析器看到的变量不是您所想的。不能在延迟扩展内使用延迟扩展
如何解决<代码>用于
可更换参数
for %%b in (!nextindex!) do (
echo username:!username! index: !nextindex! value [!array[%%b]!]
)
如果我对你的问题理解正确(这有点难说),类似这样的事情应该会对你有所帮助: @回音
rem Just init the array
setlocal EnableDelayedExpansion
set n=0
for %%a in (A B C D E F) do (
set array[!n!]=%%a
set /A n+=1
)
for /L %%c in (0,2,5) do (
set username=!array[%%c]!
set /a nextindex=%%c+1
call set val=%%array[!nextindex!]%%
echo username:!username! index: !nextindex! value [!val!]
)
其输出为:
username:A index: 1 value [B]
username:C index: 3 value [D]
username:E index: 5 value [F]
如何初始化数组?期望值是什么?我正在用一个循环初始化它,并且这些值被正确地填充,我已经检查过了。期望值是字符串。这正是我搜索的内容!!!thanx,我也为你在第一行提到的打字错误编辑了我的问题,你请相应地修改你的答案,以便将来的读者不会感到困惑:)thanx!我想你完全误解了我的问题,请看一下主持人的答案,我想你的理解会有所提高。thanx:)