批处理脚本 - 数组:初学者的指南

你好,未来的程序员们!今天,我们将进入批处理脚本中数组的精彩世界。如果你之前从未编写过一行代码,也不用担心——我会成为你这次旅行的友好向导。在本教程结束时,你将能够像专业人士一样操作数组!

Batch Script - Arrays

什么是数组?

在我们开始之前,让我们先了解一下数组是什么。想象你有一个装满蜡笔的盒子。每支蜡笔都有不同的颜色,但它们都存储在一个盒子里。数组就像这个盒子——它是一个可以容纳多个相同类型项目(称为元素)的容器。

创建数组

在批处理脚本中,创建数组很简单。我们使用 set 命令来定义我们的数组。让我们创建一个水果数组吧!

@echo off
set fruits[0]=苹果
set fruits[1]=香蕉
set fruits[2]=樱桃
set fruits[3]=枣
set fruits[4]=接骨木莓

在这个例子中,我们创建了一个名为 fruits 的数组,包含五个元素。每个元素都分配了一个索引号,从 0 开始。

专业提示:始终从 0 开始索引数组。这是大多数编程语言中遵循的约定!

访问数组

现在我们有了水果篮(数组),我们如何挑选一个特定的水果呢?我们使用索引号!

@echo off
set fruits[0]=苹果
set fruits[1]=香蕉
set fruits[2]=樱桃

echo 第一個水果是: !fruits[0]!
echo 第二個水果是: !fruits[1]!
echo 第三個水果是: !fruits[2]!

当你运行这个脚本时,你将看到:

第一個水果是: 苹果
第二個水果是: 香蕉
第三個水果是: 樱桃

注意数组引用周围的感叹号 (!)。这些非常重要!它们告诉批处理使用延迟扩展,这对于访问数组元素是必要的。

修改数组

如果我们决定我们更喜欢黑莓而不是香蕉怎么办?没问题!我们可以轻松修改我们的数组:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=苹果
set fruits[1]=香蕉
set fruits[2]=樱桃

echo 之前: 第二個水果是 !fruits[1]!

set fruits[1]=黑莓

echo 之后: 第二個水果是 !fruits[1]!

这个脚本将输出:

之前: 第二個水果是 香蕉
之后: 第二個水果是 黑莓

看看多么简单!我们只是替换了我们数组的第二个元素!

遍历数组

现在,如果我们想看到我们篮子里的所有水果怎么办?我们可以使用 for 循环来遍历我们的数组:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=苹果
set fruits[1]=黑莓
set fruits[2]=樱桃
set fruits[3]=枣
set fruits[4]=接骨木莓

for /L %%i in (0,1,4) do (
echo 水果 %%i 是: !fruits[%%i]!
)

这个脚本将输出:

水果 0 是: 苹果
水果 1 是: 黑莓
水果 2 是: 樱桃
水果 3 是: 枣
水果 4 是: 接骨木莓

以下是发生了什么:

  • /L 告诉循环遍历一个数字范围
  • %%i 是我们的循环变量
  • (0,1,4) 意味着从 0 开始,每次增加 1,直到 4

数组的长度

与一些其他编程语言不同,批处理没有内置的方式来获取数组的长度。但是别担心!我们可以创建一个小技巧:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=苹果
set fruits[1]=黑莓
set fruits[2]=樱桃
set fruits[3]=枣
set fruits[4]=接骨木莓

set "x=0"
:SymLoop
if defined fruits[%x%] (
set /a "x+=1"
GOTO :SymLoop
)
echo 水果数组有 %x% 个元素。

这个脚本将输出:

水果数组有 5 个元素。

我们在这里所做的是计算定义的元素数量,直到我们遇到一个未定义的元素。这就好比数盒子里有多少支蜡笔直到你找到一个空槽!

在数组中创建结构

现在,让我们更进一步。我们可以使用数组来创建更复杂的结构。让我们创建一个包含水果及其颜色的“数据库”!

@echo off
setlocal enabledelayedexpansion

set "fruits[0].name=苹果"
set "fruits[0].color=红色"
set "fruits[1].name=香蕉"
set "fruits[1].color=黄色"
set "fruits[2].name=蓝莓"
set "fruits[2].color=蓝色"

for /L %%i in (0,1,2) do (
echo 水果 %%i 是一个 !fruits[%%i].color! 的 !fruits[%%i].name!
)

这将输出:

水果 0 是一个 红色 的 苹果
水果 1 是一个 黄色 的 香蕉
水果 2 是一个 蓝色 的 蓝莓

我们创建了一个结构,其中每个水果都有一个名称和颜色。这就好比有一个更详细的蜡笔盒子,每支蜡笔都有颜色和特定的名称!

结论

恭喜你!你刚刚迈出了进入批处理脚本中数组世界的第一步。我们已经涵盖了创建数组、访问和修改元素、遍历数组、查找长度,甚至创建更复杂的结构。

记住,熟能生巧。尝试创建你自己的数组,也许是你的最爱书籍或电影。尝试不同的方法来操作和显示数据。在你意识到之前,你将使用数组来组织和管理脚本中的各种信息!

快乐编码,愿你的数组总是硕果累累!???

方法 描述
创建数组 使用 set arrayname[index]=value
访问数组元素 使用 !arrayname[index]! 与延迟扩展
修改数组 重新分配值使用 set arrayname[index]=newvalue
遍历数组 使用 for /L 循环
查找数组长度 使用循环来计数定义的元素
创建结构 使用点标记法:arrayname[index].property=value

Credits: Image by storyset