TASKLIST
không đặt mã thoát mà bạn có thể kiểm tra trong tệp lô. Một giải pháp thay thế để kiểm tra mã thoát có thể phân tích cú pháp đầu ra tiêu chuẩn của nó (mà hiện tại bạn đang chuyển hướng đến NUL
). Rõ ràng, nếu quá trình được tìm thấy, TASKLIST
cũng sẽ hiển thị chi tiết của nó, bao gồm cả tên hình ảnh. Do đó, bạn chỉ có thể sử dụng FIND
hoặc FINDSTR
để kiểm tra xem đầu ra của TASKLIST
có chứa tên bạn đã chỉ định trong yêu cầu hay không. Cả hai FIND
và FINDSTR
đặt mã thoát không trống nếu tìm kiếm không thành công. Vì vậy, điều này sẽ hoạt động:
@echo off
tasklist /fi "imagename eq notepad.exe" | find /i "notepad.exe" > nul
if not errorlevel 1 (taskkill /f /im "notepad.exe") else (
specific commands to perform if the process was not found
)
exit
Ngoài ra còn có một thay thế không liên quan đến TASKLIST
. Không giống như TASKLIST
, TASKKILL
không đặt mã thoát. Đặc biệt, nếu nó không thể chấm dứt một tiến trình vì nó không tồn tại, nó sẽ thiết lập mã thoát 128. Bạn có thể kiểm tra mã đó để thực hiện các hành động cụ thể mà bạn có thể cần thực hiện trong trường hợp quy trình được chỉ định không tồn tại:
@echo off
taskkill /f /im "notepad.exe" > nul
if errorlevel 128 (
specific commands to perform if the process was not terminated because it was not found
)
exit
Nguồn
2013-03-16 12:38:48
Tại sao bạn không gọi 'taskkill' mà không xác minh xem tác vụ có tồn tại không? –
'taskkill' không thay đổi errorlevel cho tôi ... – user2033427
@Andriy M Tôi muốn kiểm tra xem quá trình có tồn tại không. sau đó kết thúc quá trình hoặc đóng chính nó. – user2176930