Lệnh tạm dừng và chờ tệp hàng loạt: Cách kiểm soát luồng tập lệnh của bạn

Lenh Tam Dung Va Cho Tep Hang Loat Cach Kiem Soat Luong Tap Lenh Cua Ban



Trong tập lệnh hàng loạt trên Windows, nhà phát triển có thể kiểm soát luồng tập lệnh của bạn bằng nhiều kỹ thuật hoặc phương pháp khác nhau để đưa ra các khoảng dừng hoặc chờ. Lệnh “tạm dừng” và “chờ” là hai cách để kiểm soát luồng tệp bó của bạn. Lệnh “tạm dừng” dừng việc thực thi một tệp bó trong khi hiển thị thông báo “Nhấn phím bất kỳ để tiếp tục…”. Tệp bó không thể chạy cho đến khi người dùng nhấn phím. Việc thực thi tệp bó bị tạm dừng trong số giây được chỉ định bởi lệnh chờ.

Lệnh tạm dừng tệp hàng loạt

Lệnh 'tạm dừng' của tệp bó sẽ dừng việc thực thi tệp bó trong khi hiển thị thông báo trên dòng lệnh. Tệp bó sẽ không chạy cho đến khi người dùng nhấn phím. Lệnh dừng thực hiện tiếp theo rất hữu ích. Chạy trực tiếp tệp bó và thấy kết quả mong muốn xuất hiện trên màn hình là điều có lợi.







Cú pháp của lệnh “tạm dừng” là:



Tạm ngừng

Nhắc người dùng nhập dữ liệu

Lệnh “tạm dừng” trong tập lệnh bó sau hiển thị thông báo “Nhấn phím bất kỳ để tiếp tục…” khi người dùng chạy tệp bó này. Trước khi tập tin batch chuyển sang lệnh “dir”, người dùng phải nhấn một phím.



@echo tắt

rem Tệp bó này tạm dừng để người dùng nhấn một phím.

echo Xin chào, Chào mừng bạn đến với phần trình diễn lệnh PAUSE.

echo Việc thực thi tập lệnh tiếp tục sau khi tạm dừng.

tạm ngừng

rem Tệp bó này tiếp tục với lệnh tiếp theo.

echo Cảm ơn bạn!

Bạn





Khi người dùng nhấn bất kỳ phím nào bằng bàn phím, quá trình xử lý hàng loạt này sẽ tiếp tục:



Lệnh chờ tập tin hàng loạt

Mã bạn cung cấp là một tệp bó mở hai chương trình: Notepad và Paint. Mã này như sau:

@echo tắt

echo Bắt đầu chương trình đầu tiên.

BẮT ĐẦU /B /WAIT notepad.exe

echo Notepad Đã mở trong nền thành công

echo Bắt đầu chương trình thứ hai.

BẮT ĐẦU /CHỜ mspaint.exe

echo Sơn đã được mở thành công.

cmd /k

Dòng đầu tiên, “@echo off”, ngăn tệp bó hiển thị các lệnh khi chúng được thực thi.

Người dùng được thông báo đơn giản rằng chương trình đầu tiên đang được khởi chạy bởi dòng thứ hai là “echo Bắt đầu chương trình đầu tiên”.

Dòng thứ ba, “BẮT ĐẦU /B /WAIT notepad.exe”, mở chương trình Notepad trong cửa sổ nền và đợi chương trình hoàn tất trước khi tiếp tục. Công tắc “/B” yêu cầu lệnh START chạy chương trình trong cửa sổ nền và công tắc “/WAIT” yêu cầu lệnh START đợi chương trình kết thúc trước khi tiếp tục.

Dòng thứ tư đọc echo Notepad. Khi Notepad được mở thành công ở chế độ nền, nó chỉ thông báo cho người dùng bằng một tin nhắn.

Dòng thứ năm, “echo Bắt đầu chương trình thứ hai”, chỉ hiển thị một thông báo cho người dùng rằng chương trình thứ hai đang được bắt đầu.

Dòng thứ sáu, “BẮT ĐẦU /WAIT mspaint.exe”, mở chương trình Paint trong cửa sổ nền và không đợi chương trình kết thúc trước khi tiếp tục.

Dòng thứ bảy, “echo The Paint is Opened thành công”, chỉ hiển thị thông báo cho người dùng rằng Paint đã được mở thành công.

Dòng thứ tám, “cmd /k”, mở một cửa sổ nhắc lệnh mới và giữ cửa sổ nhắc lệnh hiện tại mở.

Sử dụng vòng lặp cho độ trễ tùy chỉnh

Chúng ta có thể sử dụng vòng lặp để tạo độ trễ tùy chỉnh trong quy trình xử lý hàng loạt. Đây là một ví dụ:

Trong ví dụ này, thông báo đầu tiên được hiển thị cho người dùng khi tệp bó này được chạy. Thông báo đầu tiên sau đó sẽ được hiển thị một lần nữa khi vòng lặp “for” bắt đầu. Lệnh hết thời gian dừng tệp bó trong một giây trước khi hiển thị thông báo thứ hai. Thông báo cuối cùng sẽ được hiển thị sau tổng cộng 10 lần lặp.

@echo tắt

echo Trình diễn độ trễ bằng vòng lặp

cho /l  %%i trong (1,1,10) do (

hết thời gian chờ /t 1 /nobreak > null

echo Thông báo này hiển thị sau %%i  giây

)

echo Thông báo này hiển thị độ trễ 10 giây.

Sử dụng thời gian chờ để trì hoãn

Lệnh hết thời gian chờ của tệp bó sẽ tạm dừng việc thực thi tệp bó trong một số giây được xác định trước. Cú pháp được đưa ra ở đây:

hết thời gian chờ /t [/nobreak]

Công tắc “/t” chỉ định khoảng thời gian tính bằng giây để chờ. Công tắc “/nobreak” sẽ vô hiệu hóa thao tác nhấn phím của người dùng để phá vỡ độ trễ.

Lệnh “timeout” có thể được sử dụng để:

  • Trì hoãn việc thực thi tệp bó trong một khoảng thời gian định trước
  • Ngăn chặn hành động của tệp bó bị gián đoạn bởi người dùng
  • Tạo trải nghiệm thân thiện hơn với người dùng bằng cách ngăn người dùng phải nhấn phím để tiếp tục

Ví dụ: tệp bó sau tạm dừng trong 10 giây:

@echo tắt

echo Xin chào, Việc thực thi tập lệnh vẫn tiếp tục sau 10 giây trì hoãn

hết thời gian/t 10

echo Cảm ơn bạn!

Như minh họa trong ảnh chụp màn hình sau, bộ hẹn giờ đang chạy và chờ người dùng ngắt lệnh “hết thời gian” bằng cách nhấn bất kỳ phím nào. Nếu người dùng nhấn phím bất kỳ, quá trình sẽ dừng và chuyển sang lệnh tiếp theo trong tệp bó:

Người dùng trong ảnh chụp màn hình sau sẽ ngắt lệnh “hết thời gian chờ” sau 5 giây, dẫn đến hiển thị thông báo “Cảm ơn!” tin nhắn:

Ảnh chụp màn hình sau đây cho thấy cách hiển thị “Thank You!” thông báo mất 10 giây để in trên màn hình nếu người dùng cuối không làm gián đoạn hướng dẫn hết thời gian chờ:

Đây là mã cập nhật đã được sửa đổi để bao gồm công tắc không ngắt nhằm ngăn người dùng cuối làm gián đoạn quá trình xử lý tệp bó:

@echo tắt

rem Tệp bó này tạm dừng trong 10 giây

echo Xin chào, Việc thực thi tập lệnh vẫn tiếp tục sau 10 giây trì hoãn

hết thời gian chờ/t 10/nobreak

rem Sau 10 giây lệnh này sẽ được hiển thị trên màn hình nhắc

echo Cảm ơn bạn!

Đây là đầu ra của mã trước đó:

Dòng lệnh sẽ nhắc người dùng nhập Y hoặc N nếu người dùng sử dụng lệnh “CTRL+C”. Nếu người dùng nhấp vào Y, công việc hàng loạt này sẽ dừng:

Các lệnh “tạm dừng”, “chờ” và “hết thời gian” là những cách để kiểm soát luồng tập lệnh của chúng tôi. Tập lệnh bị tạm dừng chạy khi sử dụng lệnh 'tạm dừng' và nó bị dừng trong một khoảng thời gian xác định trước khi sử dụng lệnh 'hết thời gian'.

Sử dụng câu lệnh có điều kiện để kiểm soát luồng

Câu lệnh có điều kiện là kỹ thuật khả thi phổ biến nhất được sử dụng để sửa đổi luồng của tập lệnh dựa trên một trường hợp nhất định. Dựa trên điều kiện đúng hay sai, câu lệnh “if” thực hiện một trong hai phần thực thi mã. Câu lệnh “if” có cấu trúc như sau:

nếu <điều kiện> khác

Ví dụ:

Mở Notepad hoặc bất kỳ trình soạn thảo văn bản nào bạn chọn và viết đoạn mã sau để khởi tạo giá trị của biến inputValue thành 1 ở dòng thứ ba. Sau đó, giá trị của biến inputValue được kiểm tra bằng cách sử dụng câu lệnh “if” trong thời gian chạy để xem nó có bằng 1, 2 hay 3. Nếu vậy, thông báo thích hợp sẽ được in trên màn hình dòng lệnh. Nếu không, thông báo cuối cùng sẽ được hiển thị. Trong câu lệnh có điều kiện được gọi là “if”, giá trị đầu vào của biến được kiểm tra để xem liệu nó có bằng 1, 2 hay 3 hay không. Nếu đúng như vậy thì một trong hai khối mã sẽ được thực thi. Nếu điều kiện đúng thì câu lệnh điều kiện không làm gì cả.

@echo tắt

rem Tập lệnh này kiểm tra biến inputValue dựa trên các giá trị 1, 2 và 3.

đặt giá trị đầu vào=1

nếu '%inputValue%'=='1' (

echo Giá trị đầu vào bằng 1.

) khác nếu '%inputValue%'=='2' (

echo Giá trị đầu vào bằng 2.

) khác nếu '%inputValue%'=='3' (

echo Giá trị đầu vào bằng 3.

) khác (

echo Biến inputValue không bằng 1, 2 hoặc 3.

)

Đầu ra:

Phần kết luận

Luồng tập lệnh có thể được kiểm soát và các quy trình có thể được tự động hóa trên hệ điều hành Windows bằng cách sử dụng các lệnh, vòng lặp và câu lệnh có điều kiện như “if”. Nhà phát triển có thể dừng quá trình thực thi tập lệnh hoặc thêm độ trễ bằng lệnh “tạm dừng” bằng cách sử dụng “hết thời gian” hoặc “ping”. Mặc dù không có câu lệnh “switch” tích hợp trong tập lệnh bó, nhưng chúng ta có thể mô phỏng nó bằng các biểu thức “if” và “else if”. Việc kiểm tra là rất quan trọng để đảm bảo rằng các tập lệnh này hoạt động như dự định trong ngữ cảnh thích hợp. Các tập lệnh này rất hữu ích cho việc tự động hóa, quản lý hệ thống và thao tác với tệp.