我需要用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