批处理脚本 - 数组:初学者的指南
你好,未来的程序员们!今天,我们将进入批处理脚本中数组的精彩世界。如果你之前从未编写过一行代码,也不用担心——我会成为你这次旅行的友好向导。在本教程结束时,你将能够像专业人士一样操作数组!
什么是数组?
在我们开始之前,让我们先了解一下数组是什么。想象你有一个装满蜡笔的盒子。每支蜡笔都有不同的颜色,但它们都存储在一个盒子里。数组就像这个盒子——它是一个可以容纳多个相同类型项目(称为元素)的容器。
创建数组
在批处理脚本中,创建数组很简单。我们使用 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