Arrays for循环中数组中的索引[输出错误][批处理]

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%]!] )

我试图以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%]!]
)
当我运行这段代码时,我得到的输出是:

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:)