Batch Script - อาร์เรย์
อาร์เรย์ไม่ได้กำหนดเป็นประเภทใน Batch Script โดยเฉพาะ แต่สามารถนำไปใช้งานได้ สิ่งต่อไปนี้ต้องสังเกตเมื่อใช้อาร์เรย์ใน Batch Script
- แต่ละองค์ประกอบของอาร์เรย์จำเป็นต้องกำหนดด้วยคำสั่ง set
- จะต้องมีการวนซ้ำ 'for' เพื่อวนซ้ำตามค่าของอาร์เรย์
การสร้าง Array
อาร์เรย์ถูกสร้างขึ้นโดยใช้คำสั่ง set ต่อไปนี้
set a[0]=1
โดยที่ 0 คือดัชนีของอาร์เรย์และ 1 คือค่าที่กำหนดให้กับองค์ประกอบแรกของอาร์เรย์
อีกวิธีหนึ่งในการใช้อาร์เรย์คือการกำหนดรายการของค่าและวนซ้ำผ่านรายการค่า ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถนำไปใช้งานได้อย่างไร
ตัวอย่าง
@echo off
set list = 1 2 3 4
(for %%a in (%list%) do (
echo %%a
))
เอาต์พุต
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
1
2
3
4
การเข้าถึงอาร์เรย์
คุณสามารถดึงค่าจากอาร์เรย์ได้โดยใช้ไวยากรณ์ตัวห้อยส่งดัชนีของค่าที่คุณต้องการเรียกคืนภายในวงเล็บเหลี่ยมหลังชื่อของอาร์เรย์ทันที
ตัวอย่าง
@echo off
set a[0]=1
echo %a[0]%
ในตัวอย่างนี้ดัชนีเริ่มต้นจาก 0 ซึ่งหมายความว่าองค์ประกอบแรกสามารถเข้าถึงได้โดยใช้ดัชนีเป็น 0 องค์ประกอบที่สองสามารถเข้าถึงได้โดยใช้ดัชนีเป็น 1 และอื่น ๆ ลองตรวจสอบตัวอย่างต่อไปนี้เพื่อสร้างเริ่มต้นและเข้าถึงอาร์เรย์ -
@echo off
set 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]%
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
The first element of the array is 1
The second element of the array is 2
The third element of the array is 3
การปรับเปลี่ยนอาร์เรย์
ในการเพิ่มองค์ประกอบที่ส่วนท้ายของอาร์เรย์คุณสามารถใช้องค์ประกอบชุดร่วมกับดัชนีสุดท้ายขององค์ประกอบอาร์เรย์
ตัวอย่าง
@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]%
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
The last element of the array is 4
คุณสามารถแก้ไของค์ประกอบที่มีอยู่ของ Array ได้โดยกำหนดค่าใหม่ที่ดัชนีที่กำหนดดังที่แสดงในตัวอย่างต่อไปนี้ -
@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]%
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
The new value of the second element of the array is 5
การทำซ้ำบนอาร์เรย์
การวนซ้ำบนอาร์เรย์ทำได้โดยใช้ลูป '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]!
)
สิ่งต่อไปนี้ต้องสังเกตเกี่ยวกับโปรแกรมข้างต้น -
แต่ละองค์ประกอบของอาร์เรย์จำเป็นต้องกำหนดโดยเฉพาะโดยใช้คำสั่ง set
ลูป 'for' ที่มีพารามิเตอร์ / L สำหรับการย้ายผ่านช่วงจะใช้เพื่อวนซ้ำผ่านอาร์เรย์
เอาต์พุต
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
Comments
variables
Arrays
Decision making
Time and date
Operators
ความยาวของอาร์เรย์
ความยาวของอาร์เรย์ทำได้โดยการวนซ้ำรายการค่าในอาร์เรย์เนื่องจากไม่มีฟังก์ชันโดยตรงในการกำหนดจำนวนองค์ประกอบในอาร์เรย์
@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%
เอาต์พุต
เอาต์พุตคำสั่งด้านบนสร้างเอาต์พุตต่อไปนี้
The length of the array is 4
การสร้างโครงสร้างในอาร์เรย์
โครงสร้างสามารถนำไปใช้ในไฟล์แบตช์ได้โดยใช้การเข้ารหัสเพิ่มเติมเล็กน้อยสำหรับการนำไปใช้งาน ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถทำได้อย่างไร
ตัวอย่าง
@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
สิ่งสำคัญต่อไปนี้ต้องสังเกตเกี่ยวกับรหัสข้างต้น
ตัวแปรแต่ละตัวที่กำหนดโดยใช้คำสั่ง set มี 2 ค่าที่เกี่ยวข้องกับดัชนีแต่ละตัวของอาร์เรย์
ตัวแปร i ถูกตั้งค่าเป็น 0 เพื่อให้เราสามารถวนซ้ำโครงสร้างได้ตามความยาวของอาร์เรย์ซึ่งเท่ากับ 3
เราตรวจสอบเงื่อนไขเสมอว่าค่าของ i เท่ากับค่าของ len และถ้าไม่เราวนซ้ำโค้ด
เราสามารถเข้าถึงแต่ละองค์ประกอบของโครงสร้างโดยใช้สัญกรณ์ obj [% i%]
เอาต์พุต
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
Name = Joe
Value = 1
Name = Mark
Value = 2
Name = Mohan
Value = 3