Danh sách Blog của Tôi

Thứ Hai, 15 tháng 10, 2012

Hướng dẫn sử dụng file Batch (*.BAT) trên Windows


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é.

1 nhận xét:

Unknown nói...

ẻm muỗm copy 1 thư mục sáng 1 phân vùng khác mà ko được

Đăng nhận xét