我查看了很多关于批处理数组的信息,但几乎所有这些都涉及遍历列表。有没有办法在没有的情况下使用循环直接在特定索引上打印值?
以下是我尝试做的一个例子:
@echo off
setlocal enabledelayedexpansion
set ITEM_LIST=(item1 item2 item3 item4 item5)
echo !ITEM_LIST[1]!
echo %ITEM_LIST[1]%
答案 0 :(得分:3)
如果您不想在检索值和构建数组时进行迭代,则 你可以使用自扩展代码。
但要注意在尝试理解代码时遇到麻烦。
@echo off & setlocal enabledelayedexpansion
Set i=0 & set "ITEM_LIST= item1 item2 item3 item4 item5"
Set "ITEM_LIST=%ITEM_LIST: ="&Set /a i+=1&Set "ITEM_LIST[!i!]=%"
Echo List has %i% entries
Set ITEM_LIST
echo !ITEM_LIST[1]!
echo %ITEM_LIST[5]%
示例运行:
> SO_45491838.cmd
List has 5 entries
ITEM_LIST[1]=item1
ITEM_LIST[2]=item2
ITEM_LIST[3]=item3
ITEM_LIST[4]=item4
ITEM_LIST[5]=item5
item1
item5
只是附加两个其他常见用途:
@echo off & setlocal enabledelayedexpansion
Rem Set MonthName[01..12] to short English month names
Set i=100&Set "MonthName= Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
Set "MonthName=%MonthName: ="&Set /a i+=1&Set "MonthName[!i:~-2!]=%"
Set MonthName
Rem Set DayName[1..7] to short English day names
Set i=0&Set "DayName= Mon Tue Wed Thu Fri Sat Sun"
Set "DayName=%DayName: ="&Set /a i+=1&Set "DayName[!i!]=%"
Set DayName
答案 1 :(得分:2)
您可以使用下标语法从数组中检索值,并在数组名称后面的方括号内传递要检索的值的索引。
例如:
set a[0]=1
echo %a[0]%
在你的代码中它将是
echo %ITEM_LIST[0]%
答案 2 :(得分:1)
您是否使用
设置列表set ITEM_LIST=item1 item2 item3 item4 item5
然后
for /f "tokens=3" %%a in ("%item_list%") do echo %%a
应该显示第三项。