2010-05-22 118 views
23

所以我有從一個bat文件開始的過程。如何阻止它從另一個?如何從.BAT文件停止進程?

+1

'taskkill -im exename.exe'將強制終止進程。這是你想要的嗎? – IVlad 2010-05-22 16:31:38

+2

[任何方式來編寫Windows .bat文件來終止進程?]可能的重複(http://stackoverflow.com/questions/33822/any-way-to-write-a-windows-bat-file-to-殺死進程) – 2016-06-23 16:06:28

回答

34

要終止你知道名的過程中,儘量:

taskkill /IM notepad.exe 

這將要求它關閉,但它可能會拒絕,提議「保存更改」,等等。如果你要強行殺死它,嘗試:

taskkill /F /IM notepad.exe 
+0

工程就像一個魅力。事實上,沒有/ F的選項要求程序很好地關閉。然後程序仍然可以決定不關閉。當關閉按鈕被按下時,我有一個程序最小化爲托盤圖標,這正是發生的情況。/F選項強制退出它。 – 2015-07-29 08:37:35

+0

'taskkill/F/IM notepad.exe'在大多數情況下對我來說更好。 'taskkill/F/IM notepad.exe'從我沒有保存對話框的任務中引發錯誤。它們沒有正確關閉,並且可能發生不同的事情(即使關閉對話框後程序仍可能保持打開狀態)。我不想在後臺生成一個錯誤,所以我推薦'/ F/IM',除非它是Word.exe或其他東西。 – 2015-12-15 05:14:42

1

當您從一個批處理文件啓動一個進程,它開始與朝啓動它(因爲這將完成在此期間運行,像批處理文件沒有暗示單獨的進程父進程ID不會幫助你)。

如果您知道進程名稱,並且它在所有正在運行的進程中都是唯一的,那麼可以使用taskkill,如@IVlad在評論中的建議。

如果它不是唯一的,你可能想看看工作。這些終止的所有衍生子進程終止。

3

由於TASKKILL可能不可用在Windows的一些家庭/基本版本在這裏一些替代方案:

TSKILL processName 

TSKILL PID 

有記住,processName不應該有.exe後綴是有限的到18個字符。

另一種選擇是WMIC

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

WMIC提供了更大的靈活性比TASKKILL。隨着wmic Path win32_process get你可以看到你可以過濾可用的Fileds。

0

爲什麼不使用PowerShell?

Stop-Process -Name notepad 

如果你是在一個批處理文件:

powershell -Command "Stop-Process -Name notepad" 
powershell -Command "Stop-Process -Id 4232" 
0

的taskkill/F/IM的notepad.exe這是殺死從任務管理器任務的最佳方式。