Batch file - Bài 1

Vào thời điểm này khi nhắc tới hệ điều hành MS DOS có lẽ không ít người sẽ nói đó là một thứ cũ kỹ, lạc hậu và đáng nhẽ Microsoft nên loại bỏ nó khỏi các hệ điều hành tân thời hiện nay. Và mình có thể chắc chắn rằng rất nhiều Newbie luôn có ý nghĩ đó trong đầu. Bởi vì rất nhiều bạn đã quên rằng các hệ điều hành Windows của Microsoft hiện nay đều được xây dựng trên nền tảng của DOS và có vô khối việc nếu dùng Windows sẽ vất vả mới thực hiện được trong khi đó chỉ với vài câu lệnh DOS đơn giản mọi chuyện sẽ hoàn toàn theo ý bạn.

Batch File luôn được xem là một thành phần không thể thiếu của DOS. Ở đây, với trình độ của mình tôi cũng chỉ cố gắng đem đến cho các bạn một số kiến thức cơ bản về Batch File, thứ mà mọi người vẫn thường gọi là file Bat. Hy vọng với chút kiến thức ít ỏi mà tôi cũng cấp các bạn sẽ có những vận dụng hiệu quả vào trong quá trình học tập và “ngâm cứu”.

Để khai thác hết được các tính năng ưu việt của Batch File các bạn nên tham khảo thêm cuốn Ebook “Lệnh DOS trong Windows" và công cụ Dr.Batcher thay cho Notepad.

I. Các kiến thức cơ bản về BATCH FILE:

1. Batch File là gì?

Với khái niệm cũ thì người ta cho rằng Batch File là một tệp xử lý lệnh theo lô. Nghĩa là các bạn có thể đặt một chuỗi lệnh mà bạn muốn thực hiện nhiều lần vào đó và mỗi lần cần bạn chỉ việc gọi file này ra mà không phải đánh hàng loạt lệnh đó nữa. Đến bây giờ thì Batch File được cho là 1 loại ngôn ngữ script.

Bạn nên biết rằng dạng file có phần mở rộng là .BAT có đôi chút khác với dạng .CMD. Với định dạng .BAT thì nó được thực thi bởi command.com (16 bit), nếu phần mở rộng là .CMD thì nó được thực thi bởi cmd.exe (32bit). Chắc bạn cũng biết rằng trong Windows hiện nay tất các dạng file này đều được thực thi bởi cmd.exe còn command.com là thành phần của hệ điều hành DOS. Vì thế bạn nên sử dụng phần mở rộng cho thích hợp.

2. Các lệnh cơ bản dùng trong Batch File.

2.1. Lệnh tạm nghỉ (PAUSE):

Khi gặp lệnh này chương trình dịch sẽ tạm nghỉ cho tới khi bạn bấm phím bất kỳ. Nó thường được dùng để kiểm tra tiến trình chạy của Batch File.

Ví dụ:

CODE

ECHO OFF

ECHO:

ECHO File BAtch duoc xem la thanh phan khong the thieu cua HĐH DOS

ECHO:

Echo Hy vong bai viet se co ich voi cac ban

ECHO:

ECHO http://vnnewbies.com

ECHO:

PAUSE

2.2. Lệnh gọi một tệp BAT (CALL):

Lệnh này giúp bạn gọi ra một File Batch khác mà không kết thúc File Batch dang thực thi. Lưu ý: File có phần mở rộng là .BAT chỉ gọi được file có phần mở rộng là .BAT chứ không thể gọi file có phần mở rộng là .CMD. Và ngược lại.

Tất nhiên là file BATCH được gọi sẽ tuân theo định dạng mà file BATCH đang thực thi đã định dạng trước đó.

Ví dụ:

CODE

ECHO OFF

ECHO:

ECHO File BAtch duoc xem la thanh phan khong the thieu cua HĐH DOS

ECHO:

Echo Hy vong bai viet se co ich voi cac ban

ECHO:

PAUSE

ECHO:

CALL newbiex.cmd

ECHO:

ECHO http://vnnewbies.com

ECHO:

PAUSE

2.3. Lệnh hiển thị các lệnh (ECHO):

Với 2 chế độ ON/OFF giúp bạn điều chỉnh việc cho phép hiển thị các dòng lệnh thực thi hoặc ẩn nó đi.

Khi gặp lệnh ECHO OFF DOS sẽ thực hiện các lệnh ở dòng tiếp theo mà không hiển thị cả câu lệnh lên cho tới khi gặp lệnh ECHO ON.

Thông thường người ta dùng lệnh ECHO để đưa ra một thông báo nào đó và sử dụng mẫu ECHO: để DOS cho ra một dòng trống.

Ví dụ: Tệp newbiex.cmd mà mình gọi ra ở ví dụ trên:

CODE

ECHO VnNewbies.com

ECHO:

Echo Share is Love

ECHO:

PAUSE

2.4. Ghi chú thích trong file BATCH (REM):

Để ghi chú thích trong file BATCH bạn dùng lệnh REM. Các chú thích đặt sau lệnh này sẽ không được thực thi và hiển thị.

Công Cụ Dr.Batcher

Reduced: 70% of original size [ 565 x 349 ] - Click to view full image

3. Lập trình đơn giản trong BatCh File:

3.1. Lệnh điều khiển vòng lặp (For):

CODE

FOR %%Biến IN (Tập_hợp) DO Lệnh_cần_làm

Lệnh này có nghĩa là một Biến sẽ lần lượt nhận các giá trị trong Tập_hợp để thực hiện các Lệnh_cần_làm.

CODE

FOR %%i IN (D,E,F) DO COPY vnnewbies.cmd %%i

Với lệnh này biến i sẽ lần lượt nhận các giá trị D, E , F từ dó sẽ thực hiện lệnh copy tệp vnnewbies.cmd sang thư mục gốc của các phân vùng C, D, F.

3.2. Phép kiểm tra điều kiện hay phép rẽ nhánh (If):

Đây là lệnh giúp bạn thực hiện từng lệnh khác nhau tùy vào từng điều kiện khác nhau. Phép thử có 3 kiểu:

If [not] exist: Kiểm tra sự tồn tại

If [not] Chuỗi1 = = Chuỗi2 : So sánh 2 chuỗi để tiến hành công việc

If [not] errorlevel # : Nếu có lỗi ở mức # thì thực hiện công việc

+) Với errorlevel 0 là không có lỗi trong quá trình thực hiện

+) Với errorlevel 1 là có lỗi xảy ra

[not] là thành phần tùy chọn giúp bạn phủ định điều kiện đứng sau nó. Tương tự như bằng một giá trị nào đó hoặc không bằng.

Ví dụ: Ở đây mình sẽ lấy một ví dụ về trường hợp 1 và 3, còn trường hợp bạn có thể xem thêm ứng dụng ở dưới.

CODE

@echo off

echo.

FOR %%i IN (D,E,F) DO COPY vnnewbies.cmd %%i:

echo.

rem Kiểm tra xem có lỗi hay không. Nếu có sẽ đưa ra thông báo

IF errorlevel 1 Echo Co loi xay ra o buoc nay

echo.

echo Noi dung file vnnewbies.cmd:

echo.

rem Kiểm tra xem có tồn tại tệp tin vnnewbies.cmd trên phân vùng D không? Nếu có thì thực hiện chạy nó.

IF exist D:\vnnewbies.cmd CALL D:\vnnewbies.cmd

PAUSE

3.3. Lệnh bước nhảy (GoTo):

Lệnh này giúp chúng ta bỏ qua một đoạn lệnh nào đó để di chuyển tới vị trí mới. Thông thường người ta kết hợp lệnh này với cấu trúc rẽ nhánh đã đề cập phía trên (If) để thực hiện các việc khác nhau cho các điều kiện khác nhau.

CODE

ECHO Chon Y - Neu dong y

ECHO Chon N - Neu ko dong y

set /p chon= Lua chon cua ban la:

if %chon% == Y goto ok

if %chon% == N goto exit

goto exit

:ok

call vnnewbies.cmd

ECHO.

:exit

ECHO Cam on ban da su dung chuong trinh

Với cấu trúc này nếu bạn nhập vào Y thì Batch File sẽ chuyển tới đoạn lệnh bắt đầu bằng :ok và và ngược lại.

3.4. Tham số hình thức (%0 %1 …):

Nó chỉ có giá trị khi bạn truyền giá trị cho nó. Hãy lấy một ví dụ đơn giản để các bạn dễ hiểu.

Với Batch File có tên vnnewbie.bat với nội dung như ví dụ ở phần 3.1:

CODE

FOR %%i IN (D,E,F) DO COPY %0 %%i:

Khi chúng ta nhập lệnh trên cửa sổ DOS: vnnewbie vnnewbies.cmd thì Batch File trên sẽ tự động nhận giá trị vnnewbies.cmd thay vào tham số hình thức của nó. Lúc này file vnnewbie.bat sẽ chạy với nội dung:

CODE

FOR %%i IN (D,E,F) DO COPY vnnewbies.cmd %%i

Đây tuy chỉ là những cấu trúc cơ bản của Batch File nhưng với nó bạn có thể dễ dàng làm được rất nhiều việc phức tạp một cách đơn giản hơn rất nhiều.

Phần tiếp theo chúng ta sẽ nghiên cứu 1 chút về file autoexec.bat. Một Batch File đặc biệt của hệ điều hành DOS và một số ứng dụng hữu ích của nó. Hãy đóng góp ý kiến của mình để bài viết thêm phong phú bạn nhé.