【发布时间】:2019-10-15 11:38:53
【问题描述】:
我在批处理脚本中定义列表,然后想在每个列表中打印一个特定元素,但得到一个“ECHO 已关闭”输出(如果它是空的)。
我尝试使用 FOR 循环遍历列表,效果很好。
这是我正在尝试运行的代码
@echo off
rem --------start of Define list--------
set clist= A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
set ilist= X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
set testl= 1 2 3 4
rem --------end of Define list--------
echo %clist[1]%
echo %ilist[1]%
echo %testl[1]%
预期输出:
B
Y
2
实际输出:
ECHO is off
ECHO is off
ECHO is off
【问题讨论】:
-
空格分隔的列表不是数组。当
cmd.exe人们谈论“数组”时,他们通常是指创建多个变量。var[0]、var[1]、var[2]等 -
批处理脚本中没有列表或数组的概念,只有普通的环境变量(如
VAR);但它们有时被命名为数组元素(如VAR[0]、VAR[1]等),我通常称之为伪数组。在这个帖子上循环:Arrays, linked lists and other data structures in cmd.exe (batch) script
标签: batch-file cmd