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