我正在使用以下代码来终止所有 java 进程。
taskkill /F /IM javaw.exe
taskkill /F /IM java.exe
exit
当我需要杀死我所有的 java 进程时,这很好用。问题是当我运行它时,它也会杀死我的 eclipse 进程。如何跳过 eclipse 进程并杀死所有其他 java 进程。
一种方法是保存 Eclipse 进程的 PID,然后当您对所有 Java 进程执行 taskkill 时,排除该 PID
改编自Kill only one process with 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
我发现的另一种方法是使用jps
与 JDK 捆绑在一起的程序,按名称查找 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 )
对您来说最好的方法将取决于您的特定用例。