批处理数组

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

  • 数组中的每个元素都需要用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)
(0)

相关推荐

  • ​LeetCode刷题实战215:数组中的第K个最大元素

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • 学会这两招,PLC编程也可以批量化定义变量-数组、结构

    数组 简单的说,就是多个相同类型数据一定顺序排列的集合,使用一个名字命名,并通过编号的方式对这些数据统一管理. 在PLC编程过程中,我们也经常遇到同类型的变量需要定义,例如10台电机的电流值,如果不使 ...

  • C语言0数组/柔性数组使用介绍

    前言: 我自己在这篇文章下面做了一些回复. 现在我想结合我自己的理解,解释一下这个 char[0] C语言柔性数组的问题. 作者:良知犹存 转载授权以及围观:欢迎关注微信公众号:羽林君 或者添加作者个 ...

  • 【C语言核心基础】基本运算、变量、数组、指针、函数、结构体...

    C 语言基础 // 引入头文件.里面包含了重要的 printf. #include <stdio.h> // 入口函数. // 参数一指输入的参数个数,参数二保存了所有参数. // 返回值 ...

  • 在PHP中灵活使用foreach+list处理多维数组

    先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如: $arr = [ [1, 2, [3, 4]], [5, 6, [7, 8]],]; 我们需要的结果是元素1变成1, ...

  • VB中怎样对一个二维数组的行进行操作

    通常,数学上的行列式或者矩阵,用二维数组来存放数据,二维数组的第1维,就是映射矩阵的行,二维数组的第2维,就是映射矩阵的列. 例如: dim d(1 To 3,1 To 4) As Integer 对 ...

  • 数组及Arrays类

    数组是相同类型的有序集合 数组的下标是从0开始的,所以数组中的最大下标为该数组长度减1 初始化数组的三种方式: //动态初始化:先创建后赋值int[] name=new int[10];//确立了数组 ...

  • 如何将二维数组作为函数的参数传递

    今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我也解决了遇到的问题,所以这篇文章主要介绍如何处理二维数组当作参数传递的情况,希望大家不 ...

  • Excel数组入门之计算规则

    问题:{1,2,3;4,5,6} 是几行几列? 如果这个问题,你能回答出来,那么说明你对水平和垂直数组有了清晰的认识.如果没有也没有关系,下面我们就带大家先认识一下,然后再谈计算规则! 常量数组写法 ...

  • 数组入门

    数组,函数进阶门槛,但是对于很多人是很难跨的一道坎.想写数组很久了,虽然自己已轻车熟路,但是让别人听懂却不是一件容易的事,今日路上偶有一感,或许能带大家一起入个门! 先抛开那些无聊的概念,我们直接通过 ...