Biến trong batch là thành phần cốt lõi giúp tự động hóa các tác vụ trên Windows. Nếu bạn từng viết file.bat mà chỉ toàn lệnh cứng, thiếu linh hoạt, thì việc nắm vững cách sử dụng biến trong batch sẽ thay đổi hoàn toàn cách bạn viết script. Bài viết này sẽ hướng dẫn từ khái niệm cơ bản, khai báo, gán giá trị, cho đến các kỹ thuật nâng cao như delayed expansion, biến môi trường, biến tham số, cùng những sai lầm thường gặp và cách tránh.
Biến Trong Batch Là Gì?

Biến trong batch là vùng nhớ tạm thời lưu trữ dữ liệu dạng chuỗi (string) hoặc số. Các biến này cho phép script tái sử dụng giá trị, thay đổi hành vi theo điều kiện, và tương tác với môi trường hệ thống. Batch sử dụng cú pháp %tên_biến% để truy xuất giá trị.
Các Loại Biến Trong Batch

Trong batch, có ba loại biến chính: biến môi trường, biến tham số, và biến do người dùng khai báo. Mỗi loại có cách sử dụng và phạm vi riêng.
| Loại biến | Phạm vi | Ví dụ |
|---|---|---|
| Biến môi trường | Toàn hệ thống hoặc phiên làm việc | %PATH%, %USERNAME% |
| Biến tham số | Cục bộ trong script (đối số dòng lệnh) | %1, %2, %~dp0 |
| Biến do người dùng khai báo | Cục bộ (mặc định) hoặc toàn cục (setx) | %myVar% |
Cách Khai Báo và Gán Giá Trị Cho Biến

Dùng lệnh set để khai báo biến. Cú pháp cơ bản:
set ten_bien=giatri
Lưu ý: không có khoảng trắng quanh dấu bằng. Nếu giá trị chứa khoảng trắng, phải đặt trong dấu ngoặc kép.
Ví dụ cơ bản
set ten=Nguyen Van A set so_luong=10 echo %ten% co %so_luong% san pham.
Gán biến từ đầu vào người dùng
set /p ho_ten=Nhap ho ten: echo Xin chao %ho_ten%
Gán với phép toán số học
set /a ket_qua=5 + 3 * 2 echo %ket_qua%
Biến Môi Trường và Cách Sử Dụng

Hệ thống Windows có sẵn hàng trăm biến môi trường. Một số biến thường dùng:
- %WINDIR% – thư mục Windows (C:Windows)
- %TEMP% – thư mục tạm thời của người dùng
- %USERPROFILE% – thư mục hồ sơ người dùng
- %DATE% và %TIME% – ngày giờ hiện tại
Để xem toàn bộ biến môi trường, gõ set trong Command Prompt.
Biến Tham Số (Argument Variables)

Khi chạy file batch với các đối số,
Dùng lệnh set với cú pháp: set tên_biến=giá_trị. Nếu giá trị chứa khoảng trắng, đặt trong dấu ngoặc kép: set "tên_biến=giá trị".
Sự khác nhau giữa biến môi trường và biến thường?
Biến môi trường có phạm vi toàn hệ thống hoặc phiên đăng nhập, tồn tại ngoài script. Biến thường chỉ tồn tại trong phiên làm việc của Command Prompt và bị mất khi đóng cửa sổ.
Delayed expansion (bật setlocal enabledelayedexpansion) để làm gì?
Cho phép truy xuất giá trị biến tại thời điểm chạy thay vì thời điểm phân tích cú pháp. Cần thiết khi gán biến trong vòng lặp for hoặc khối if nhiều dòng.
Có thể khai báo biến toàn cục vĩnh viễn không?
Có, dùng lệnh setx để thiết lập biến môi trường vĩnh viễn. Ví dụ: setx PATH "%PATH%;C:MyTools". Cần mở lại Command Prompt để thay đổi có hiệu lực.
Tại sao biến trong vòng lặp for không hiển thị giá trị mới?
Vì batch mở rộng biến ngay khi đọc dòng lệnh. Để khắc phục, bật delayed expansion và dùng !biến! thay vì %biến%.
Kết Luận
Nắm vững cách sử dụng biến trong batch là kỹ năng then chốt để viết script tự động hóa hiệu quả trên Windows. Từ việc khai báo đơn giản, sử dụng biến môi trường, xử lý tham số, cho đến các kỹ thuật nâng cao như delayed expansion và setlocal, mỗi khái niệm đều mở ra khả năng kiểm soát script tốt hơn. Hãy luôn kiểm tra cú pháp, tránh các lỗi phổ biến như quên dấu ngoặc kép hay không bật chế độ mở rộng trễ. Thực hành thường xuyên với các tình huống thực tế sẽ giúp bạn thành thạo nhanh chóng.






