openplanning

Mảng (Array) trong ngôn ngữ kịch bản Batch

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Mảng trong ngôn ngữ Batch

Mảng là một dẫy các phần tử liền kề nhau, các phần tử được đánh chỉ số (index)  0, 1, 2, ....
Với các ngôn ngữ khác mảng có kích thước cố định. Nhưng trong ngôn ngữ Batch, mảng có kích thước động, và không có thuộc tính mô tả độ dài của mảng (số phần tử của mảng). Và cũng không có hàm (function) nào trực tiếp giúp bạn lấy được số phần tử của một mảng.
Tất cả các phần tử của mảng cần phải được gán giá trị thông qua lệnh set, nếu không phần tử đó không tồn tại.

@echo off
set myarray[0] = Abc
set /A myarray[1] = 234
set myarray[2]=Def

set myarray[0]=A new value
Ví dụ:
arrayExample1.bat

@echo off
set names[0]=Tom
set names[1]=Jerry
set names[2]=Donald
set names[3]=Aladin

echo names[0]= %names[0]%
echo names[3]= %names[3]%

@rem names[10] does not exists!
echo names[10]= %names[10]%
pause
Bạn có thể gán giá trị mới cho các phần tử của mảng, dưới đây là ví dụ:
arrayExample2.bat

@echo off
set names[0]=Tom
set names[1]=Jerry
echo names[0]= %names[0]%

@rem: Assign new value
set names[0]=Donald

echo After assign new value to names[0]:
echo names[0]= %names[0]%
pause

2- Kiểm tra sự tồn tại của một phần tử

Sử dụng lệnh defined giúp bạn có thể kiểm tra một phần tử trong mảng có tồn tại hay không?
arrayDefinedExample.bat

@echo off
set Arr[0]=1000
set Arr[1]=5000
set Arr[2]=3000

if not defined Arr[5] (
   echo Element at 5 does not exists!
)
if defined Arr[1] (
   echo Element at 1 exists!
)
pause

3- Lặp trên các phần tử của mảng

Xem thêm:
Vòng lặp For /F có thể duyệt trên một dải số (Range of numbers), vì vậy nó có thể duyệt trên dải các chỉ số của mảng (range of indexes)
fetchArrayExample1.bat

@echo off
set fruits[0]=Apple
set fruits[1]=Apricot
set fruits[2]=Asparagus
set fruits[3]=Aubergine
set fruits[4]=Banana

FOR /L %%i IN (0 1 4) DO  (
   call echo Element At %%i = %%fruits[%%i]%%
)
pause
Nếu bạn không biết trước số phần tử của mảng, bạn có thể lặp trên các phần tử của nó bằng cách sử dụng lệnh goto.
fetchArrayExample2.bat

@echo off
set fruits[0]=Apple
set fruits[1]=Apricot
set fruits[2]=Asparagus
set fruits[3]=Aubergine
set fruits[4]=Banana

set /A i = 0
:my_loop 
    if defined fruits[%i%]  (
        call echo Element At %i% = %%fruits[%i%]%%  
        set /a i = %i% + 1
        goto :my_loop
    ) 
echo Done!
pause

4- Phần tử có cấu trúc

Trong ngôn ngữ Batch, phần tử của mảng có thể có một cấu trúc (Structure). Một cấu trúc là một đối tượng có nhiều thuộc tính, chẳng hạn một đối tượng dại diện cho một người với 2 thuộc tính firstName, lastName (Tên, Họ).
structureArrayExample.bat

@echo off
set persons[0].firstName=Bill
set persons[0].lastName=Gates

set persons[1].firstName=Steve
set persons[1].lastName=Jobs

set persons[2].firstName=Mark
set persons[2].lastName=Zuckerberg 

set persons[3].firstName=Sundar
set persons[3].lastName=Pichai

FOR /L %%i IN (0 1 3) DO  (
   call echo Person At %%i = %%persons[%%i].firstName%% %%persons[%%i].lastName%%
)
pause
Có thể bạn quan tâm

Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá.