批量FOR循环没有setlocal enabledelayedexpansion

时间:2018-02-21 13:53:22

标签: batch-file

使用此代码例如:

setlocal enabledelayedexpansion

set  arrayline[0]=############
set  arrayline[1]=#..........#
set  arrayline[2]=#..........#
set  arrayline[3]=#..........#
set  arrayline[4]=#..........#
set  arrayline[5]=#..........#
set  arrayline[6]=#..........#
set  arrayline[7]=#..........#
set  arrayline[8]=#..........#
set  arrayline[9]=#..........#
set arrayline[10]=#..........#
set arrayline[11]=#..........#
set arrayline[12]=############

::read it using a FOR /L statement
for /l %%n in (0,1,12) do (
echo !arrayline[%%n]!
)
pause

我想使用“普通”变量语法,而不是使用setlocal enabledelayedexpansion(第1行)。

我的意思是代替!arrayline[%%n]!我希望有类似的东西:%arrayline[n]%以便将信息放入变量中(这样:)

setlocal enabledelayedexpansion

set  arrayline[0]=############
set  arrayline[1]=#..........#
set  arrayline[2]=#..........#
set  arrayline[3]=#..........#
set  arrayline[4]=#..........#
set  arrayline[5]=#..........#
set  arrayline[6]=#..........#
set  arrayline[7]=#..........#
set  arrayline[8]=#..........#
set  arrayline[9]=#..........#
set arrayline[10]=#..........#
set arrayline[11]=#..........#
set arrayline[12]=############

::read it using a FOR /L statement
for /l %%n in (0,1,12) do (
set buffer=%arrayline[n]%
echo %buffer%
)
pause

需要将信息放入变量(这里是缓冲区)。

如果可能,有人可以替换我的必要代码吗?

我是一个乞丐,所以如果不够清楚,请问;)

提前谢谢。

1 个答案:

答案 0 :(得分:2)

CALL echo %%arrayline[%%n]%%

是这里的经典解决方案。这将在子过程中执行echo %arrayline[n]%

CALL SET "myvar=%%arrayline[%%n]%%"
CALL ECHO %%myvar%%