Tập lệnh hàng loạt - Mảng

Mảng không được xác định cụ thể như một kiểu trong Batch Script nhưng có thể được triển khai. Những điều sau đây cần được lưu ý khi mảng được triển khai trong Batch Script.

  • Mỗi phần tử của mảng cần được xác định bằng lệnh set.
  • Vòng lặp 'for' sẽ được yêu cầu để lặp qua các giá trị của mảng.

Tạo một mảng

Một mảng được tạo bằng cách sử dụng lệnh đặt sau.

set a[0]=1

Trong đó 0 là chỉ số của mảng và 1 là giá trị được gán cho phần tử đầu tiên của mảng.

Một cách khác để triển khai mảng là xác định danh sách giá trị và lặp lại qua danh sách giá trị. Ví dụ sau đây cho thấy cách này có thể được thực hiện.

Thí dụ

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Đầu ra

Lệnh trên tạo ra kết quả sau.

1
2
3
4

Truy cập Mảng

Bạn có thể truy xuất một giá trị từ mảng bằng cách sử dụng cú pháp chỉ số con, chuyển chỉ mục của giá trị bạn muốn lấy trong dấu ngoặc vuông ngay sau tên của mảng.

Thí dụ

@echo off 
set a[0]=1 
echo %a[0]%

Trong ví dụ này, chỉ mục bắt đầu từ 0 có nghĩa là phần tử đầu tiên có thể được truy cập bằng chỉ mục bằng 0, phần tử thứ hai có thể được truy cập bằng chỉ mục bằng 1, v.v. Hãy kiểm tra ví dụ sau để tạo, khởi tạo và truy cập các mảng:

@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]%

Lệnh trên tạo ra kết quả sau.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Sửa đổi một mảng

Để thêm một phần tử vào cuối mảng, bạn có thể sử dụng phần tử tập hợp cùng với chỉ số cuối cùng của phần tử mảng.

Thí dụ

@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]%

Lệnh trên tạo ra kết quả sau.

The last element of the array is 4

Bạn có thể sửa đổi một phần tử hiện có của một Mảng bằng cách gán một giá trị mới tại một chỉ mục nhất định như thể hiện trong ví dụ sau:

@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]%

Lệnh trên tạo ra kết quả sau.

The new value of the second element of the array is 5

Lặp lại trên một mảng

Lặp lại một mảng có thể đạt được bằng cách sử dụng vòng lặp 'for' và đi qua từng phần tử của mảng. Ví dụ sau đây cho thấy một cách đơn giản mà một mảng có thể được triển khai.

@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]! 
)

Những điều cần lưu ý sau đây về chương trình trên:

  • Mỗi phần tử của mảng cần được xác định cụ thể bằng cách sử dụng lệnh set.

  • Vòng lặp 'for' với tham số / L để di chuyển qua các dải được sử dụng để lặp qua mảng.

Đầu ra

Lệnh trên tạo ra kết quả sau.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Chiều dài của một mảng

Độ dài của mảng được thực hiện bằng cách lặp qua danh sách các giá trị trong mảng vì không có hàm trực tiếp để xác định số phần tử trong mảng.

@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%

Đầu ra

Đầu ra Lệnh trên tạo ra kết quả sau.

The length of the array is 4

Tạo cấu trúc trong mảng

Các cấu trúc cũng có thể được triển khai trong các tệp hàng loạt bằng cách sử dụng một chút mã hóa bổ sung để triển khai. Ví dụ sau đây cho thấy điều này có thể đạt được như thế nào.

Thí dụ

@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

Những điều chính sau đây cần được lưu ý về mã trên.

  • Mỗi biến được định nghĩa bằng lệnh set có 2 giá trị được liên kết với mỗi chỉ số của mảng.

  • Biến i được đặt thành 0 để chúng ta có thể lặp qua cấu trúc sẽ có độ dài của mảng là 3.

  • Chúng tôi luôn kiểm tra điều kiện xem giá trị của i có bằng giá trị của len và nếu không, chúng tôi lặp lại mã.

  • Chúng tôi có thể truy cập từng phần tử của cấu trúc bằng ký hiệu obj [% i%].

Đầu ra

Lệnh trên tạo ra kết quả sau.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3