我需要用WMIC命令找到一個進程PID,然後用taskkill殺死這個進程。我幾乎已經實現了這一點,但唯一的問題是PID變量末尾有換行符。 到目前爲止我提出這樣的:如何用wmic找到進程pid並用taskkill殺死它
c:\patryk>for /F "skip=1 tokens=*" %a in ('wmic process where "CommandLine like '%sourceprocessor%' and name like '%java%'" get ProcessId') do taskkill /pid | set /p pid=%a
因此,這是通過含有3行WMIC的輸出循環:標題(的ProcessID),實測PID(數字)和一個空行。我正在跳過第一行,因爲它只是標題。現在我想殺死第二行中找到的pid進程。還有一個問題,它在行尾有一個換行標記,所以整個命令都不起作用。 任何人都可以給我一些建議,我怎麼能實現這一點?我怎樣才能刪除這個換行符?
謝謝你的回答。這個解決方案有效,但我發現更容易一些。當我們正在尋找如此艱難的方式來終止進程時,結果很簡單: 'wmic進程,其中「CommandLine like'%sourceprocessor%'和名稱'%java%'」調用terminate' 做這個工作:) – 2014-09-02 11:57:11
@PatrykS,只是一個音符。 'taskkill'(不帶'/ f')向目標進程發送一個'wm_close'消息,要求它關閉。 'wmi Terminate'方法並不那麼溫柔,直接殺死了這個進程。如果不存在數據丟失的風險,則無關緊要,否則,更好的方法是從「taskkill」開始,如果在一段時間後該進程仍在運行,則使用「taskkill/f」或「wmi terminate」來確保該過程結束。 – 2014-09-02 12:15:55
謝謝你的建議,我知道。幸運的是,沒有數據丟失的風險,並且該過程可以終止。 – 2014-09-02 12:35:38