开发手册 欢迎您!
软件开发者资料库

批处理脚本 - 数组

批处理脚本数组 - 从简单和简单的步骤学习批处理脚本,从基本到高级概念,包括概述,环境,命令,文件,语法,变量,注释,字符串,数组,决策,操作符,日期和时间,输入/输出,返回代码,函数,进程,别名,设备,注册表,网络,打印,调试,日志记录。

数组未明确定义为批处理脚本中的类型,但可以实现.在批处理脚本中实现数组时,需要注意以下事项.

  • 需要使用集合定义数组的每个元素命令.

  • 需要'for'循环来遍历数组的值.

创建数组

使用以下set命令创建数组.

set a[0]=1


其中0是数组的索引,1是分配给数组第一个元素的值.

实现数组的另一种方法是定义值列表并迭代值列表.以下示例显示了如何实现此功能.

示例

@echo off set list = 1 2 3 4 (for %%a in (%list%) do (    echo %%a ))


输出

上述命令产生以下输出.

1234


访问数组

您可以检索一个值通过使用下标语法从数组中,在数组名称后面的方括号内传递要检索的值的索引.

示例

@echo off set a[0]=1 echo %a[0]%


在此示例中,索引从0开始,这意味着可以使用index作为0访问第一个元素,可以使用index作为1来访问第二个元素,依此类推.让我们检查以下示例来创建,初始化和访问数组 :

@echo offset a[0] = 1 set a[1] = 2 set a[2] = 3 echo The first element of the array is %a[0]% echo The second element of the array is %a[1]% echo The third element of the array is %a[2]%


上面的命令生成以下内容输出.

The first element of the array is 1 The second element of the array is 2 The third element of the array is 3


修改数组

要在数组的末尾添加元素,你可以使用set元素和数组元素的最后一个索引.

示例

@echo off set a[0] = 1  set a[1] = 2  set a[2] = 3 Rem Adding an element at the end of an array Set a[3] = 4 echo The last element of the array is %a[3]%


上面的命令产生以下输出.

The last element of the array is 4


您可以通过分配来修改数组的现有元素给定索引处的新值,如下例所示 :

@echo off set a[0] = 1 set a[1] = 2  set a[2] = 3 Rem Setting the new value for the second element of the array Set a[1] = 5 echo The new value of the second element of the array is %a[1]%


上面的命令产生以下输出.

The new value of the second element of the array is 5

迭代在数组上

通过使用'for'循环并遍历数组的每个元素来实现对数组的迭代.以下示例显示了一种可以实现数组的简单方法.

@echo off setlocal enabledelayedexpansion set topic[0] = comments set topic[1] = variables set topic[2] = Arrays set topic[3] = Decision making set topic[4] = Time and date set topic[5] = Operators for /l %%n in (0,1,5) do (    echo !topic[%%n]! )

关于上述程序需要注意的事项 :

  • 需要使用set命令专门定义数组的每个元素.

  • 'for'循环用于遍历范围的/L参数用于遍历数组.

输出

上面的命令产生以下输出.

Comments variables Arrays Decision making Time and date Operators


数组的长度

数组的长度是通过迭代完成的数组中的值列表,因为没有直接函数来确定数组中元素的数量.

@echo off set Arr[0] = 1 set Arr[1] = 2 set Arr[2] = 3 set Arr[3] = 4 set "x = 0" :SymLoop if defined Arr[%x%] (    call echo %%Arr[%x%]%%    set /a "x+=1"   GOTO :SymLoop )echo "The length of the array is" %x%


输出

输出上面的命令产生以下输出.

The length of the array is 4


在数组中创建结构

结构也可以在批处理文件中实现,使用一些额外的编码来实现.以下示例显示了如何实现此目的.

示例

@echo off set len = 3 set obj[0].Name = Joe set obj[0].ID = 1 set obj[1].Name = Mark set obj[1].ID = 2 set obj[2].Name = Mohan set obj[2].ID = 3 set i = 0 :loop if %i% equ %len% goto :eof set cur.Name= set cur.ID=for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do (    set cur.%%k=%%l ) echo Name = %cur.Name% echo Value = %cur.ID% set /a i = %i%+1 goto loop


关于上述代码需要注意以下关键事项.

  • 使用set命令定义的每个变量有2个值与数组的每个索引相关联.

  • 变量 i 设置为0,这样我们就可以遍历结构将是数组的长度为3.

  • 我们总是检查i的值是否等于 len 的值的条件,如果不是,我们遍历代码.

  • 我们可以使用obj [%i%]表示法访问结构的每个元素.

输出

上述命令产生以下输出.

Name = Joe Value = 1 Name = Mark Value = 2 Name = Mohan Value = 3