Batch Script - Các biến

Có hai loại biến trong tệp hàng loạt. Một là cho các tham số có thể được truyền khi tệp lô được gọi và cái còn lại được thực hiện thông qua lệnh set.

Đối số dòng lệnh

Các tập lệnh hàng loạt hỗ trợ khái niệm về các đối số dòng lệnh trong đó các đối số có thể được chuyển đến tệp hàng loạt khi được gọi. Các đối số có thể được gọi từ các tệp lô thông qua các biến% 1,% 2,% 3, v.v.

Ví dụ sau đây cho thấy một tệp loạt chấp nhận 3 đối số dòng lệnh và echo chúng vào màn hình dòng lệnh.

@echo off 
echo %1 
echo %2 
echo %3

Nếu tập lệnh hàng loạt ở trên được lưu trữ trong một tệp có tên là test.bat và chúng tôi đã chạy tập lệnh hàng loạt như

Test.bat 1 2 3

Sau đây là ảnh chụp màn hình về cách điều này sẽ trông như thế nào trong dấu nhắc lệnh khi tệp lô được thực thi.

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

1 
2 
3

Nếu chúng tôi chạy lô như

Example 1 2 3 4

Đầu ra sẽ vẫn giống như trên. Tuy nhiên, tham số thứ tư sẽ bị bỏ qua.

Đặt lệnh

Một cách khác mà các biến có thể được khởi tạo là thông qua lệnh 'set'. Sau đây là cú pháp của lệnh set.

Cú pháp

set /A variable-name=value

Ở đâu,

  • variable-name là tên của biến bạn muốn đặt.

  • value là giá trị cần được đặt so với biến.

  • /A – Công tắc này được sử dụng nếu giá trị cần phải là số.

Ví dụ sau đây cho thấy một cách đơn giản lệnh set có thể được sử dụng.

Thí dụ

@echo off 
set message=Hello World 
echo %message%
  • Trong đoạn mã trên, một biến có tên là message được xác định và đặt với giá trị là "Hello World".

  • Để hiển thị giá trị của biến, lưu ý rằng biến đó cần được đặt trong dấu%.

Đầu ra

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

Hello World

Làm việc với các giá trị số

Trong tập lệnh lô, cũng có thể xác định một biến để giữ một giá trị số. Điều này có thể được thực hiện bằng cách sử dụng công tắc / A.

Đoạn mã sau đây cho thấy một cách đơn giản trong đó các giá trị số có thể được đặt bằng công tắc / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Đầu tiên chúng ta đặt giá trị của 2 biến a và b lần lượt là 5 và 10.

  • Chúng tôi đang thêm các giá trị đó và lưu trữ trong biến c.

  • Cuối cùng, chúng ta đang hiển thị giá trị của biến c.

Đầu ra của chương trình trên sẽ là 15.

Tất cả các toán tử số học đều hoạt động trong các tệp hàng loạt. Ví dụ sau đây cho thấy các toán tử số học có thể được sử dụng trong các tệp hàng loạt.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

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

15 
-5 
2 
50

Biến cục bộ so với biến toàn cầu

Trong bất kỳ ngôn ngữ lập trình nào, có một tùy chọn để đánh dấu các biến là có một số loại phạm vi, tức là phần mã mà chúng có thể được truy cập. Thông thường, biến có phạm vi toàn cục có thể được truy cập ở bất kỳ đâu từ chương trình trong khi các biến có phạm vi cục bộ có ranh giới xác định mà chúng có thể được truy cập.

DOS scripting cũng có một định nghĩa cho các biến phạm vi cục bộ và toàn cầu. Theo mặc định, các biến là chung cho toàn bộ phiên nhắc lệnh của bạn. Gọi lệnh SETLOCAL để biến cục bộ thành phạm vi tập lệnh của bạn. Sau khi gọi SETLOCAL, bất kỳ phép gán biến nào sẽ hoàn nguyên khi gọi ENDLOCAL, gọi EXIT hoặc khi việc thực thi đến cuối tệp (EOF) trong tập lệnh của bạn. Ví dụ sau cho thấy sự khác biệt khi các biến cục bộ và toàn cục được đặt trong tập lệnh.

Thí dụ

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Vài điều chính cần lưu ý về chương trình trên.

  • 'Globalvar' được định nghĩa với phạm vi toàn cầu và có sẵn trong toàn bộ tập lệnh.

  • Biến 'var' được xác định trong phạm vi cục bộ vì nó nằm giữa khối 'SETLOCAL' và 'ENDLOCAL'. Do đó, biến này sẽ bị hủy ngay khi câu lệnh 'ENDLOCAL' được thực thi.

Đầu ra

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

13150
5

Bạn sẽ nhận thấy rằng lệnh echo% var% sẽ không mang lại kết quả gì vì sau câu lệnh ENDLOCAL, biến 'var' sẽ không còn tồn tại nữa.

Làm việc với các biến môi trường

Nếu bạn có các biến sẽ được sử dụng trên các tệp hàng loạt, thì bạn nên sử dụng các biến môi trường. Khi biến môi trường được xác định, nó có thể được truy cập thông qua dấu%. Ví dụ sau đây cho thấy cách xem JAVA_HOME được định nghĩa trên một hệ thống. Biến JAVA_HOME là một thành phần chính thường được nhiều ứng dụng sử dụng.

@echo off 
echo %JAVA_HOME%

Đầu ra sẽ hiển thị thư mục JAVA_HOME phụ thuộc từ hệ thống này sang hệ thống khác. Sau đây là một ví dụ về đầu ra.

C:\Atlassian\Bitbucket\4.0.1\jre