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