批處理腚本 - 陣列:初學者指南
你好,未來的編程師們!今天,我們將要進入批處理腚本中陣列的精彩世界。如果你從未寫過一行代碼,也不用擔心 - 我將成為你這次旅程中的友好指導者。在本教程結束時,你將能夠像專業人士一樣操作陣列!
什麼是陣列?
在我們開始之前,讓我們先了解陣列是什麼。想像你有一盒彩色筆。每一枝彩色筆都是不同的顏色,但它們都存放在同一個盒子里。陣列就像那個盒子 - 它是一個可以存放多個同類型項目(稱為元素)的容器。
創建陣列
在批處理腚本中,創建陣列非常直接。我們使用 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