批處理腚本 - 陣列:初學者指南

你好,未來的編程師們!今天,我們將要進入批處理腚本中陣列的精彩世界。如果你從未寫過一行代碼,也不用擔心 - 我將成為你這次旅程中的友好指導者。在本教程結束時,你將能夠像專業人士一樣操作陣列!

Batch Script - Arrays

什麼是陣列?

在我們開始之前,讓我們先了解陣列是什麼。想像你有一盒彩色筆。每一枝彩色筆都是不同的顏色,但它們都存放在同一個盒子里。陣列就像那個盒子 - 它是一個可以存放多個同類型項目(稱為元素)的容器。

創建陣列

在批處理腚本中,創建陣列非常直接。我們使用 set 指令來定義我們的陣列。讓我們創建一個水果陣列!

@echo off
set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

在這個例子中,我們創建了一個名為 fruits 的陣列,包含了五個元素。每一個元素都被分配了一個從0開始的索引號。

專業提示:始終從0開始編號。這是大多數編程語言中遵循的慣例!

存取陣列

現在,我們有了我們的水果籃(陣列),我們如何挑選特定的水果呢?我們使用索引號!

@echo off
set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry

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

當你運行這個腚本時,你將看到:

第一個水果是: Apple
第二個水果是: Banana
第三個水果是: Cherry

注意陣列引用兩旁的驚嘆號 (!)。這些是關鍵的!它們告訴批處理使用延遲擴展,這對於存取陣列元素是必要的。

修改陣列

如果我們決定我們更喜歡黑莓而不是香蕉怎麼辦?沒問題!我們可以輕鬆地修改我們的陣列:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Banana
set fruits[2]=Cherry

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

set fruits[1]=Blackberry

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

這個腚本將輸出:

之前: 第二個水果是 Banana
之後: 第二個水果是 Blackberry

看起來很簡單吧?我們只是替換了我們陣列的第二個元素!

遍歷陣列

現在,如果我們想要查看我們籃子裡的所有水果怎麼辦?我們可以使用 for 循環來遍歷我們的陣列:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Blackberry
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

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

這個腚本將輸出:

水果 0 是: Apple
水果 1 是: Blackberry
水果 2 是: Cherry
水果 3 是: Date
水果 4 是: Elderberry

這裡發生了什麼:

  • /L 告訴循環遍歷一個數字範圍
  • %%i 是我們的循環變量
  • (0,1,4) 意味著從0開始,每次增加1,直到4

陣列的長度

與某些其他編程語言不同,批處理沒有內置的方法來獲取陣列的長度。但別擔心!我們可以創建一個小方法來解決這個問題:

@echo off
setlocal enabledelayedexpansion

set fruits[0]=Apple
set fruits[1]=Blackberry
set fruits[2]=Cherry
set fruits[3]=Date
set fruits[4]=Elderberry

set "x=0"
:SymLoop
if defined fruits[%x%] (
set /a "x+=1"
GOTO :SymLoop
)
echo 陣列 fruits 有 %x% 個元素。

這個腚本將輸出:

陣列 fruits 有 5 個元素。

我們在這裡做的是計算有多少個定義的元素,直到我們遇到一個未定義的元素。這就像計算盒子里有多少枝彩色筆直到達到一個空槽!

在陣列中創建結構

現在,讓我們來一點進階的。我們可以使用陣列來創建更複雜的結構。讓我們創建一個包含水果和它們顏色的"數據庫"!

@echo off
setlocal enabledelayedexpansion

set "fruits[0].name=Apple"
set "fruits[0].color=Red"
set "fruits[1].name=Banana"
set "fruits[1].color=Yellow"
set "fruits[2].name=Blueberry"
set "fruits[2].color=Blue"

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

這將輸出:

水果 0 是一個 Red 的 Apple
水果 1 是一個 Yellow 的 Banana
水果 2 是一個 Blue 的 Blueberry

我們創建了一個結構,其中每個水果都有名字和顏色。這就像一個更詳細的彩色筆盒子,每枝彩色筆都有顏色和特定的名字!

結論

恭喜你!你剛剛踏出了進入批處理腚本中陣列世界的第一步。我們已經介紹了創建陣列、存取和修改元素、遍歷陣列、找到長度,甚至創建更複雜的結構。

記住,熟練來自練習。嘗試創建你自己的陣列,也許是你喜歡的書籍或電影。嘗試不同的方法來操作和顯示數據。在你意識到之前,你將會使用陣列來組織和管理腚本中的各種信息!

快樂編程,願你的陣列總是充滿果實!???

方法 描述
創建陣列 使用 set arrayname[index]=value
存取陣列元素 使用 !arrayname[index]! 並啟用延遲擴展
修改陣列 使用 set arrayname[index]=newvalue 重新賦值
遍歷陣列 使用 for /L 循環
找到陣列長度 使用循環計算定義的元素數量
創建結構 使用點表示法:arrayname[index].property=value

Credits: Image by storyset