如何使用taskkill跳过杀死一个进程

我正在使用下面的代码来杀死所有的java进程。

taskkill /F /IM javaw.exe taskkill /F /IM java.exe exit 

这个工作正常,当我需要杀死所有的我的Java进程。 问题是当我运行它也杀死我的eclipse过程。 我怎样才能跳过eclipse进程,并杀死所有其他的java进程。

一种方法是保存eclipse进程的PID,然后在任务完成所有java进程时,排除该PID

改编自杀死只有一个进程taskkill :

在一个cmd窗口中:

使用批处理文件启动eclipse:

 start eclipse.exe for /f "tokens=2" %%x in ('tasklist ^| findstr java.exe') do set PIDTOSAVE=%%x 

并终止你会使用

 for /f "tokens=2" %%x in ('tasklist ^| findstr java.exe ^| findstr /v %PIDTOSAVE%') do taskkill /F /PID %%x 

我发现的另一种方法是使用与JDK捆绑在一起的jps程序,按名称查找java进程。 请参阅http://yannickloriot.com/2012/08/kill-a-java-process-from-the-command-line-or-a-bat-file/#sthash.bFaaPUxi.dpbs 。 示例用法是:

 for /f "tokens=1" %i in ('jps -m ^| find "YOUR_JAVA_PROCESS_NAME"') do ( taskkill /F /PID %i ) 

对你来说最好的方法将取决于你的具体用例。