Có cách nào để viết tệp .bat Windows để tiêu diệt các quy trình không? [đóng cửa]


114

Mỗi khi bật máy phát triển do công ty sở hữu, tôi phải giết hơn 10 quy trình bằng Trình quản lý tác vụ hoặc bất kỳ ứng dụng quản lý quy trình nào khác chỉ để đạt được hiệu suất tốt từ IDE của mình. Có, đây là các quy trình từ các chương trình mà công ty của tôi cài đặt trên máy tính của tôi để bảo mật và tuân thủ. Những gì tôi muốn làm là có một tệp .bat hoặc tập lệnh của một số loại mà tôi có thể giết các quy trình được đề cập.

Có ai biết làm thế nào để làm điều này?


Điều này cũng sẽ hữu ích khi ở trong môi trường tự động hóa và một quy trình con đang chạy cần được kết thúc nếu nó không hoàn thành hoặc phản hồi trong một khoảng thời gian thích hợp.
Danny Staple

Tôi đã đăng liên kết câu hỏi này cho tất cả các đồng nghiệp trực tiếp của mình vì chúng tôi là 20 nhà phát triển S / W trong một công ty với 2000 kỹ sư (làm CAD). Chúng tôi đang đấu tranh vĩnh viễn với bộ phận quản trị CNTT vì (do chính sách bảo mật) chúng tôi gần như không thể thực hiện công việc của mình ... (Nó không giúp ích gì về mặt kỹ thuật nhưng thật vui khi biết rằng các nhà phát triển S / W khác dường như gặp vấn đề tương tự .)
Scheff

Câu trả lời:


171

Bạn có thể làm điều này với ' taskkill '. Với tham số / IM, bạn có thể chỉ định tên hình ảnh.

Thí dụ:

taskkill /im somecorporateprocess.exe

Bạn cũng có thể làm điều này để ' buộc ' giết:

Thí dụ:

taskkill /f /im somecorporateprocess.exe

Chỉ cần thêm một dòng cho mỗi quá trình bạn muốn hủy, lưu nó dưới dạng tệp .bat và thêm vào thư mục khởi động của bạn. Vấn đề đã được giải quyết!

Nếu đây là một hệ thống kế thừa, PsKill cũng sẽ làm như vậy.


34
LOL - "somecorporateprocess.exe" Tóm tắt khá nhiều về việc ngắt kết nối CNTT của công ty với các nhóm phát triển.
maplemale

8
Tôi đã thành công khi sử dụng taskkill /F /IM <processname.exe> /Tđể buộc đóng tất cả các quy trình bằng tên của chúng.
Benj

không hoạt động trên win10 cho quá trình tiêu diệt nền. tất cả quá trình nền trong win 10 được đặt tên RuntimeBroker.exevà khi thử giết không có gì xảy ra.
Mostafa

106
taskkill /f /im "devenv.exe"

điều này sẽ buộc phải giết pid có tên exe "devenv.exe"

tương đương với -9 trên lệnh nix'y kill


3
Nó không hoạt động cho đến khi tôi thêm cờ / f vào lệnh. Cảm ơn bạn!
Denis M. Kitchen

4
Điều này sẽ giết TẤT CẢ các mục nhập có tên được cung cấp. Đặc biệt tiện dụng khi một chương trình Backfires và mở notepad.exe 1000 lần trong nền:] * e hèm *
Richard de Wit

8

Vì TASKKILL có thể không khả dụng trên một số phiên bản Trang chủ / phiên bản cơ bản của windows nên một số lựa chọn thay thế:

TSKILL processName

hoặc là

TSKILL PID

Lưu ý rằng processNamekhông nên có .exehậu tố và được giới hạn trong 18 ký tự.

Một lựa chọn khác là WMIC:

wmic Path win32_process Where "Caption Like 'MyProcess%.exe'" Call Terminate

wmic cung cấp tính linh hoạt hơn so với taskkill với các trình so khớp giống SQL của nó. Với wmic Path win32_process getbạn có thể thấy các tệp có sẵn mà bạn có thể lọc (và %có thể được sử dụng làm ký tự đại diện).


5

Tôi giả sử là một nhà phát triển, bạn có một số mức độ kiểm soát quản trị đối với máy của mình. Nếu vậy, từ dòng lệnh, hãy chạy msconfig.exe. Bạn có thể loại bỏ nhiều quy trình ngay cả khi bắt đầu, do đó loại bỏ sự cần thiết phải giết chúng bằng các giải pháp đã đề cập ở trên.


5

Nhận Autoruns từ Mark Russinovich, người của Sysinternals đã phát hiện ra Sony Rootkit ... Phần mềm tốt nhất mà tôi từng sử dụng để dọn dẹp mọi thứ tự động khởi động.


4

Tải xuống PSKill . Viết một tệp hàng loạt gọi nó cho mỗi quá trình bạn muốn chết, chuyển tên của quá trình cho mỗi quá trình.



0

Vui lòng tìm logic bên dưới nơi nó hoạt động với điều kiện.

Nếu chúng ta chỉ đơn giản gọi taskkill /im applicationname.exe, nó sẽ giết chỉ khi quá trình này đang chạy. Nếu quá trình này không chạy, nó sẽ xuất hiện một lỗi.

Vì vậy, để kiểm tra trước khi takskillđược gọi, một kiểm tra có thể được thực hiện để đảm bảo rằng thực thi taskkillsẽ được thực thi chỉ khi quá trình đang chạy, để nó không gây ra lỗi.

tasklist /fi "imagename eq applicationname.exe" |find ":" > nul

if errorlevel 1 taskkill /f /im "applicationname.exe"

1
dễ dàng hơn để chỉ cần chuyển hướng được thông báo lỗi của taskkillđểnul
Stephan

0

Ở đây tôi đã viết một lệnh ví dụ mà bạn có thể dán vào cmddấu nhắc dòng lệnh của mình và được viết cho chrome.exe.

FOR /F "tokens=2 delims= " %P IN ('tasklist /FO Table /M "chrome*" /NH') DO (TASKKILL /PID %P)

Lệnh for chỉ lấy tất cả các lệnh PIDđược liệt kê trong tasklistlệnh dưới đây và thực thi TASKKILL /PIDtrên mọiPID

tasklist /FO Table /M "chrome*" /NH

Nếu bạn sử dụng for trong một tệp hàng loạt, chỉ cần sử dụng %% P thay vì% P

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.