我使用以下代码,如果我调用array.bat外部循环,您可以将输出中的值与调用期间使用的索引不同。
@echo off
set empresas[0]=EPB
set empresas[1]=ENF
set empresas[2]=ESE
set empresas[3]=ESS
set empresas[4]=EBO
set empresas[5]=EMG
set empresas[6]=EMT
set empresas[7]=ETO
call array.bat len empresas length
call array.bat getitem empresas 0 empresa1
echo %empresa1%
call array.bat getitem empresas 1 empresa1
echo %empresa1%
echo %length%
for /l %%x in (0, 1, %length% ) do (
call array.bat getitem empresas %x% empresa3
echo %empresa3%
echo %%x
)该代码生成输出:
EPB
ENF
7
ETO
0
ETO
1
ETO
2
ETO
3
ETO
4
ETO
5
ETO
6
ETO
7只有最后的值被打印出来了。
发布于 2017-11-15 17:58:18
又是delayedexpansion陷阱。请在上面搜索delayed expansion。
试一试
call array.bat getitem empresas %%x empresa3
CALL echo %%empresa3%%请注意,%%x是元级%%x的值。%x%是环境变量x的内容(根据您的代码,它是未定义的)
阅读delayedexpansion将解释为什么需要额外的CALL和加倍的% (许多可能的解决方案之一)。
https://stackoverflow.com/questions/47314051
复制相似问题