2014-10-24 13 views
8

Tôi muốn viết một tập tin thực thi đơn giản để giết một quá trình có chứa văn bản nhất định trong tiêu đề cửa sổ. Ngay bây giờ tôi có:Windows Batch file - taskkill nếu tiêu đề cửa sổ có chứa văn bản

taskkill /fi "Windowtitle eq XXXX*" /im cmd.exe 

Và điều đó hoạt động, ngoại trừ những gì tôi muốn làm là sử dụng ký tự đại diện ở đầu và cuối tiêu đề. Vì vậy, một cái gì đó như:

taskkill /fi "Windowtitle eq \*X*" /im cmd.exe 

Nhưng tôi đã thử điều này và nó không hoạt động. Có điều gì tôi đang thiếu hoặc điều này là không thể?

Trả lời

5

Không, ký tự đại diện không được phép ở đầu bộ lọc.

for /f "tokens=2 delims=," %%a in (' 
    tasklist /fi "imagename eq cmd.exe" /v /fo:csv /nh 
    ^| findstr /r /c:".*X[^,]*$" 
') do taskkill /pid %%a 

này sẽ lấy danh sách các nhiệm vụ, trong csv và định dạng verbose (mà sẽ bao gồm tiêu đề cửa sổ như trường cuối cùng trong đầu ra).

Danh sách được lọc theo findstr với cụm từ thông dụng sẽ tìm kiếm văn bản được chỉ định (X) trong trường cuối cùng.

Nếu bất kỳ dòng nào khớp với bộ lọc, for sẽ mã hóa nó, truy xuất trường thứ hai (PID) sẽ được sử dụng trong taskkill để kết thúc quá trình.

+0

Sau khi tìm kiếm giờ, đây là phương pháp tốt nhất hiện có! Cảm ơn, MC ND! – Acidon

4

Trong trường hợp đặc biệt, bạn đã bắt đầu cửa sổ lệnh từ một loạt tập tin bản thân, bạn có thể chỉ định các tiêu đề cửa sổ bằng cách sử dụng lệnh

START MyWindowTitle c:/MyProcess.exe 

Bằng cách đó nó rất dễ dàng để giết chết quá trình một lần nữa sử dụng chỉ

taskkill /fi "WindowTitle eq MyWindowTitle" 
+0

Tuyệt vời! những công việc này. Lưu ý: nếu tiêu đề của bạn có "Quản trị viên:" ở phía trước, hãy xem câu trả lời này tại đây: http://stackoverflow.com/questions/10948235/taskkill-window-spaces-in-its-title-name – Marc

+0

Ví dụ hoàn hảo và đơn giản . Cảm ơn –

Các vấn đề liên quan