Batch Script - Functions
Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ cùng nhau khám phá thế giới kỳ diệu của hàm trong lập trình Batch. Là giáo viên máy tính gần gũi của bạn, tôi rất vui mừng được hướng dẫn các bạn trong hành trình này. Vậy, hãy lấy một cốc nước uống yêu thích của bạn, và chúng ta cùng bắt đầu nhé!
Hàm là gì?
Trước khi chúng ta đi vào chi tiết, hãy hiểu hàm là gì. Hãy tưởng tượng hàm như những người giúp việc nhỏ trong script của bạn. Chúng giống như những mini chương trình trong chương trình chính của bạn để thực hiện các nhiệm vụ cụ thể. Giống như bạn có thể yêu cầu một người bạn giúp bạn làm một công việc cụ thể, bạn có thể gọi các hàm này để thực hiện các công việc cụ thể trong script của bạn.
Định nghĩa hàm
Bây giờ, hãy học cách tạo những người bạn nhỏ giúp đỡ này. Trong lập trình Batch, chúng ta định nghĩa hàm bằng cách sử dụng nhãn. Dưới đây là cấu trúc cơ bản:
:functionName
REM Mã của hàm bạn ở đây
REM ...
REM ...
goto :eof
Hãy phân tích nó:
-
:functionName
là nhãn đánh dấu bắt đầu của hàm của bạn. - Các dòng tiếp theo sau nhãn chứa mã thực tế của hàm bạn.
-
goto :eof
chỉ định script nhảy đến cuối文件, hiệu quả là kết thúc hàm.
Dưới đây là một ví dụ đơn giản:
:sayHello
echo Hello, World!
goto :eof
Hàm này, khi được gọi, sẽ đơn giản in ra "Hello, World!" lên console.
Gọi hàm
Bây giờ chúng ta đã tạo một hàm, làm thế nào để chúng ta sử dụng nó? Chúng ta sử dụng lệnh call
. Dưới đây là cách thực hiện:
@echo off
call :sayHello
pause
:sayHello
echo Hello, World!
goto :eof
Khi bạn chạy script này, nó sẽ đầu ra:
Hello, World!
Nhấn bất kỳ phím nào để tiếp tục . . .
Lệnh call
chỉ định script thực thi hàm sayHello
.
Hàm với tham số
Hàm trở nên mạnh mẽ hơn khi chúng ta có thể truyền thông tin cho chúng. Những mảnh thông tin này được gọi là tham số. Hãy thay đổi hàm sayHello
của chúng ta để chào đón một người cụ thể:
@echo off
call :sayHello John
pause
:sayHello
echo Hello, %~1!
goto :eof
Đầu ra:
Hello, John!
Nhấn bất kỳ phím nào để tiếp tục . . .
Trong ví dụ này, %~1
đại diện cho tham số đầu tiên được truyền cho hàm. Khi chúng ta gọi sayHello John
, "John" trở thành tham số đầu tiên.
Hàm với nhiều tham số
Chúng ta có thể truyền nhiều tham số cho một hàm. Hãy tạo một hàm để cộng hai số:
@echo off
call :addNumbers 5 3
pause
:addNumbers
set /a result=%~1 + %~2
echo The sum of %~1 and %~2 is %result%
goto :eof
Đầu ra:
The sum of 5 and 3 is 8
Nhấn bất kỳ phím nào để tiếp tục . . .
Ở đây, %~1
đại diện cho tham số đầu tiên (5), và %~2
đại diện cho tham số thứ hai (3).
Trả về giá trị từ hàm
Trong lập trình Batch, hàm không trả về giá trị theo cách truyền thống. Tuy nhiên, chúng ta có thể sử dụng các biến môi trường để mô phỏng hành vi này:
@echo off
call :multiply 6 7
echo The result is %result%
pause
:multiply
set /a result=%~1 * %~2
goto :eof
Đầu ra:
The result is 42
Nhấn bất kỳ phím nào để tiếp tục . . .
Trong ví dụ này, hàm multiply
đặt một biến result
, mà chúng ta có thể sử dụng trong script chính.
Biến cục bộ trong hàm
Khi làm việc với hàm, thường tốt hơn khi sử dụng các biến cục bộ để tránh can thiệp vào các biến trong script chính. Chúng ta có thể làm điều này bằng cách sử dụng các lệnh setlocal
và endlocal
:
@echo off
set globalVar=I'm global
call :localVarDemo
echo After function call: %globalVar%
pause
:localVarDemo
setlocal
set globalVar=I'm local
echo Inside function: %globalVar%
endlocal
goto :eof
Đầu ra:
Inside function: I'm local
After function call: I'm global
Nhấn bất kỳ phím nào để tiếp tục . . .
Lệnh setlocal
tạo một môi trường mới cho hàm, và endlocal
hủy bỏ nó khi hàm kết thúc, giữ nguyên giá trị ban đầu của globalVar
.
Thư viện hàm
Khi script của bạn trở nên phức tạp hơn, bạn có thể thấy mình sử dụng cùng một hàm trong nhiều script khác nhau. Thay vì sao chép và dán các hàm này vào mỗi script, bạn có thể tạo một thư viện hàm:
- Tạo một file mới, hãy gọi nó là
myFunctions.bat
- Đặt các hàm thường sử dụng của bạn vào file này
- Trong script chính của bạn, sử dụng lệnh
call
để chạy file này trước khi sử dụng các hàm của nó
myFunctions.bat:
:sayHello
echo Hello, %~1!
goto :eof
:addNumbers
set /a result=%~1 + %~2
goto :eof
mainScript.bat:
@echo off
call myFunctions.bat
call :sayHello World
call :addNumbers 10 20
echo The sum is %result%
pause
Phương pháp này giúp bạn giữ mã của mình tổ chức và có thể tái sử dụng.
Các phương pháp hàm phổ biến
Dưới đây là bảng các phương pháp liên quan đến hàm phổ biến trong lập trình Batch:
Phương pháp | Mô tả |
---|---|
call | Gọi một hàm |
goto :eof | Kết thúc một hàm |
%~1, %~2, v.v. | Truy cập các tham số hàm |
setlocal | Tạo một môi trường biến cục bộ |
endlocal | Kết thúc môi trường biến cục bộ |
Nhớ rằng, thực hành là cách tốt nhất để trở thành người thạo! Đừng ngại thử nghiệm với các khái niệm này. Tạo ra các hàm của riêng bạn, chơi với các tham số, và xem bạn có thể xây dựng được gì. Trước khi bạn biết, bạn sẽ viết các script Batch phức tạp một cách dễ dàng!
Chúc các bạn may mắn trong việc lập trình, các nhà lập trình tương lai!
Credits: Image by storyset