通常taskkill /im "java.exe"
会终止列表中的所有 Java 进程。但是我想终止某个特定的进程。问题在于识别正确的进程,因为有多个java.exe
进程同时运行且彼此不相关。
有没有办法通过应用程序名称而不是进程名称来终止进程?我在任务管理器的“应用程序”选项卡中显示了应用程序名称,我可以手动右键单击该应用程序并选择“转到进程”。它将突出显示相关的 java 进程。有没有办法从命令行执行此操作?
答案1
使用 taskkill,您可以使用过滤器根据窗口标题终止进程。
taskkill /F /FI "WindowTitle eq Spotify" /T
/F
- 强制终止任务/T
- 终止子进程/FI
- 过滤任务
如果窗口标题中有引号,您可以使用反斜杠 ( \
) 将嵌套的引号转义。
您可以以类似的方式使用 tasklist 根据窗口标题来搜索任务。
tasklist /V /FI "WindowTitle eq Spotify"
您可以使用*
作为通配符来匹配模式
tasklist /V /FI "WindowTitle eq S*"
答案2
对于所有 java.exe 进程,都有一个与之关联的“命令行”属性,您可以使用以下方法获取它:
wmic PROCESS where "name like '%java%'" get Commandline
通常,你会发现 Jar 文件(特定于 Java 进程)是命令行的一部分
您可以使用 jar 文件的名称或命令行的任何部分来筛选出 java 进程并使用以下方法获取所需的进程 ID
wmic PROCESS where "name like '%java.exe%' AND CommandLine like '%<part of commnad line argument>%'"get Processid
除了在上面的命令中使用 get Processid 之外,您还可以使用 call Terminate 直接终止该进程。
wmic PROCESS Where "name Like '%java.exe%' AND CommandLine like '%<part of commnad line argument>%'" Call Terminate