打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
批处理数组

数组类型并没有明确定义为批处理脚本中的类型,但可以实现。 在批处理脚本中实现数组时需要注意以下几点。

  • 数组中的每个元素都需要用set命令来定义。
  • for循环将需要遍历数组的值。

创建一个数组

一个数组是通过使用下面的set命令创建的。

set a[0]=1
Bat

其中0是数组的索引,1是分配给数组的第一个元素的值。
另一种实现数组的方法是定义一个值列表并遍历值列表。 以下示例显示了如何实现。

示例

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

以上命令产生以下输出 -

1234
Shell

访问数组

可以使用下标语法从数组中检索值,并在数组的名称后面立即传递要检索的值的索引。

示例

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

在这个例子中,索引从0开始,第一个元素可以使用索引访问为0,第二个元素可以使用索引访问为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]%
Bat

以上命令产生以下输出 -

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

修改数组

要将一个元素添加到数组的末尾,可以使用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]%
Bat

以上命令产生以下输出 -

The last element of the array is 4
Shell

可以通过在给定索引处指定新值来修改数组的现有元素,如以下示例所示 -

@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]%
Bat

以上命令产生以下输出 -

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

迭代数组

遍历数组是通过使用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]! )
Bat

以下方面需要注意的事项 -

  • 数组中的每个元素都需要使用set命令专门定义。
  • for循环移动范围的/L参数用于迭代数组。

以上命令产生以下输出 -

Comments variables Arrays Decision making Time and date Operators
Shell

数组的长度

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

@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%
Bat

以上命令产生以下输出 -

The length of the array is 4
Shell

在数组中创建结构

结构也可以在批处理文件中使用一点额外的编码来实现。 以下示例显示了如何实现这一点。

示例

@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
Bat

上面的代码需要注意以下几点 -

  • 使用set命令定义的每个变量具有与数组的每个索引关联的2个值。
  • 变量i设置为0,以便可以遍历结构将数组的长度为3
  • 总是检查i的值是否等于len的值,如果不是,则循环遍历代码。
  • 可以使用obj[%i%]表示法访问结构的每个元素。

以上命令产生以下输出 -

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

  

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
  • Java技术群: 227270512 (人数:3000
  • Go开发者群(新): 851549018 (人数:2000)
  • PHP开发者群: 460153241 (人数:2000)
  • MySQL/SQL群: 418407075 (人数:2000)
  • 大数据开发群: 655154550 (人数:2000)
  • Python技术群: 287904175 (人数:2000)
  • 人工智能深度学习: 456236082 (人数:2000)
  • 测试工程师群: 415553199 (人数:2000)
  • 前端开发者群: 410430016 (人数:2000)
  • C/C++技术群(新): 629264796 (人数:2000)
  • Node.js技术群(新): 621549808 (人数:2000)
  • PostgreSQL数据库群: 539504187 (人数:2000)
  • Linux运维技术群: 479429477 (人数:2000)
  • Oracle数据库: 175248146 (人数:2000)
  • C#/ASP.Net开发者: 630493968 (免费,人数:2000)
  • 数据分析师群: 397883996 (人数:2000)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
php、json
批处理中的数组
JavaScript中的所有循环类型
JavaScript 学习-4.Array数组遍历的几种方式
php如何解析JSON数据
Shell编程中的数组定义、遍历 | 四号程序员
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服