如何在Windows的CMD中借助fzf便捷查找并终止进程?
如何在Windows的CMD中借助fzf便捷查找并终止进程?
嗨,我来帮你搞定这个问题!既然你已经用Chocolatey装好了fzf,咱们可以通过几个命令组合,在CMD里实现类似POSIX系统那种便捷的进程查找+终止功能,比单纯用taskkill /IM Tab要灵活得多~
直接在CMD中用单行命令实现
你可以直接在CMD里输入这条命令,快速筛选并杀掉目标进程:
tasklist /v /fo csv | fzf | for /f "tokens=2 delims=," %a in ('more') do taskkill /f /pid %~a
我给你拆解下每个部分的作用:
tasklist /v /fo csv:让Windows以CSV格式输出进程的详细信息,方便后续精准提取PID| fzf:把进程列表传给fzf,你可以输入关键词搜索目标进程,选中后按回车确认for /f ...:从你选中的那一行里提取出PID(CSV格式里第二列就是PID),然后用taskkill /f /pid强制终止这个进程
做成批处理脚本,一键调用更省心
如果觉得每次敲长命令麻烦,咱们可以把它做成批处理脚本,以后直接调用:
- 新建一个文本文件,命名为
killproc.bat - 把下面的内容复制进去:
@echo off tasklist /v /fo csv | fzf | for /f "tokens=2 delims=," %%a in ('more') do taskkill /f /pid %%~a
- 把这个bat文件放到系统PATH包含的目录里(比如
C:\Windows\System32,或者你自己的工具目录),之后在CMD里直接敲killproc就能启动这个工具了!
进阶:添加进程预览功能
如果你想在筛选时查看进程的详细信息,还可以给fzf加个预览参数:
tasklist /v /fo csv | fzf --preview "tasklist /v /fi \"PID eq {2}\"" | for /f "tokens=2 delims=," %a in ('more') do taskkill /f /pid %~a
这样选中某个进程时,fzf会在右侧显示该进程的详细信息,帮你确认是不是要终止的目标~
最后小提醒:如果是在批处理文件里用for循环,变量要写成%%a,而不是CMD直接输入时的%a;另外用PID杀进程比用进程名更精准,不会误杀同名的其他进程哦~
备注:内容来源于stack exchange,提问作者Foad




