如何通过应用程序名称杀死特定的 java 进程

Eug*_*e S 3 windows task-manager command-line process

通常taskkill /im "java.exe"会杀死列表中的所有 java 进程。但是,我想杀死一个特定的人。问题是确定正确的进程,因为有多个java.exe进程同时运行且彼此不相关。

有没有办法通过应用程序名称而不是进程名称杀死进程?我在任务管理器的“应用程序”选项卡中显示了应用程序名称,我可以手动右键单击该应用程序并选择“转到进程”。它将突出显示相关的java进程。无论如何可以从命令行执行此操作吗?

小智 6

对于所有 java.exe 进程,都有一个与之关联的“命令行”属性,您可以使用该属性:

wmic PROCESS where "name like '%java%'" get Commandline
Run Code Online (Sandbox Code Playgroud)

通常你会发现 Jar 文件(特定于 java 进程)作为命令行的一部分

您可以使用 jar 文件的名称或命令行的任何部分来过滤 java 进程并使用以下命令获取所需的进程 ID

wmic PROCESS where "name like '%java.exe%' AND CommandLine like '%<part of commnad line argument>%'"get Processid
Run Code Online (Sandbox Code Playgroud)

您可以使用 call Terminate 直接终​​止进程,而不是在上面的命令中使用 get Processid 。

wmic PROCESS Where "name Like '%java.exe%' AND CommandLine like '%<part of commnad line argument>%'" Call Terminate
Run Code Online (Sandbox Code Playgroud)


小智 5

使用 taskkill,您可以使用过滤器根据窗口标题终止进程。

taskkill /F /FI "WindowTitle eq Spotify" /T
Run Code Online (Sandbox Code Playgroud)
  • /F - 强制任务杀死
  • /T - 杀死子进程
  • /FI - 过滤任务

如果窗口标题中有引号,您可以使用反斜杠 ( \)对嵌套的引号进行转义。

您可以以类似的方式使用 tasklist 根据其窗口标题搜索任务。

tasklist /V /FI "WindowTitle eq Spotify"
Run Code Online (Sandbox Code Playgroud)

您可以将*用作通配符来匹配模式

tasklist /V /FI "WindowTitle eq S*"
Run Code Online (Sandbox Code Playgroud)