Sử dụng Batch Files, Phần 4: Câu lệnh GỌI
Nếu bây giờ bạn vẫn chưa đoán ra, các tệp hàng loạt có thể đóng vai trò là một loại ngôn ngữ lập trình thô sơ. Một điều mà các ngôn ngữ lập trình hiện đại cung cấp là khả năng mô-đun hóa mã thành các phần nhỏ để nếu bạn thay đổi một phần, bạn không có nguy cơ vô tình thay đổi một số mã không liên quan. Bạn có thể mô-đun hóa một tệp loạt lớn bằng cách chia nhỏ nó thành những tệp nhỏ hơn và sử dụng câu lệnh CALL để gọi các mô-đun riêng lẻ theo yêu cầu.
Hãy lấy trường hợp có một hệ thống menu cho phép người dùng gọi bất kỳ chức năng nào. Những gì chúng ta sẽ làm là đặt từng hàm trong tệp lô của riêng chúng và sử dụng câu lệnh CALL trong tệp lô của menu chính để gọi hàm đã chọn, sau đó sẽ quay lại menu để cho phép người dùng chọn một hàm khác.
Đây là những gì Menu.bat có thể trông giống như:
@ECHO OFF :TOP CLS ECHO Welcome to the Main Menu! Here are your choices... ECHO. ECHO A) Perform Function A B) Perform Function B ECHO C) Perform Function C D) Perform Function D ECHO. ECHO Q) Quit ECHO. CHOICE /C ABCDQ GOTO %ERRORLEVEL% :5 GOTO :EOF :4 CALL FuncD.bat GOTO TOP :3 CALL FuncC.bat GOTO TOP :2 CALL FuncB.bat GOTO TOP :1 CALL FuncA.bat GOTO TOP
Và đây là những gì FuncA.bat có thể trông như thế này:
ECHO This is Function A PAUSE
Mặc dù thực tế là không có gì thú vị xảy ra ở đây, đó là bước khởi đầu của một khuôn khổ tốt cho một hệ thống menu dựa trên lệnh. Và có một vài mục cần lưu ý. Làm việc từ trên xuống dưới, lệnh mới đầu tiên chúng ta gặp là lệnh CLS. Lệnh đơn giản này chỉ xóa màn hình để menu của chúng ta luôn hiển thị đẹp. Con mắt tinh tường cũng sẽ nhận thấy một số câu lệnh ECHO ngay sau dấu chấm. Đây là cách bạn xuất ra một dòng trống. Một mục mới khác là nhãn EOF tích hợp sẵn. Điều này phân phối với nhu cầu phải khai báo nhãn của riêng bạn tồn tại ở dòng cuối cùng của tệp (như nhãn “: Xong” của tôi được sử dụng trong các mẹo khác).
Điều này đưa chúng ta đến các câu lệnh CALL. Tham số được chỉ định với CALL là tên của tệp lô sẽ được gọi tiếp theo. Vì vậy, ví dụ: nếu người dùng chọn Tùy chọn A từ menu, tệp loạt sẽ ngay lập tức chuyển đến nhãn: 1, điều này sẽ khiến FuncA.bat được gọi tiếp theo. Tệp FuncA.bat của tôi chỉ đơn giản là ECHO một dòng và dừng lại. Câu lệnh PAUSE tạo ra một dòng cho biết “Nhấn phím bất kỳ để tiếp tục…”. Sau đó, nó sẽ tạm dừng việc thực thi tệp hàng loạt cho đến khi người dùng nhấn một phím. Khi một phím được nhấn, tệp loạt sẽ tiếp tục, trong trường hợp này có nghĩa là FuncA.bat kết thúc và điều khiển sẽ tiếp tục trở lại trong tệp loạt menu chính tại dòng ngay sau lệnh gọi đến FuncA.bat. Vì vậy, điều tiếp theo sẽ xảy ra là GOTO TOP, bắt đầu lại mọi thứ.
Lưu ý rằng bạn không cần đặt “@ECHO OFF” khác ở đầu FuncA.bat vì trạng thái ECHO được duy trì khi FuncA.bat được gọi.
Mẹo này (13187) áp dụng cho Windows 7, 8 và 10.