你在你的代码中的几个小错误:
- 您还没有初始化的计数器变量。
- 的FOR命令是略有不同的格式
- 注释通过REM命令插入,而不是//
这是你的代码的正确版本:
@echo off
setlocal enabledelayedexpansion
set Base_list[0]=Base1
set Base_list[1]=Base2
set Base_list[2]=Base3
set Base_list[3]=Base4
set Base_list[4]=Base5
set Base_list[5]=Base6
set Current_Node=Node1
rem Explicitly set the counter:
set counter=5
if "%Current_Node%" == "Node1" (
for /l %%a in (0 , 1, %counter%) do (
rem do some stuff
echo Element %%a in Base_list array is: !Base_list[%%a]!
)
)
然而,这代码可以用更简单的方式编写:
@echo off
setlocal enabledelayedexpansion
rem Create the array via elements placed in a FOR command
rem at same time, generate the counter:
set counter=0
for %%a in (Base1 Base2 Base3 Base4 Base5 Base6) do (
set Base_list[!counter!]=%%a
set /A counter+=1
)
rem Adjust the counter because the array is zero-based:
set /A counter-=1
set Current_Node=Node1
if "%Current_Node%" == "Node1" (
for /l %%a in (0 , 1, %counter%) do (
rem do some stuff
echo Element %%a in Base_list array is: !Base_list[%%a]!
)
)
我建议你阅读this post批处理文件中的数组管理。