1简介
taskkill是用来终止进程的。具体的命令规则如下:
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]
描述:
这个命令行工具可用来结束至少一个进程。
可以根据进程 id 或图像名来结束进程。
参数列表:
/S system 指定要连接到的远程系统。
/U [domain\\]user 指定应该在哪个用户上下文
执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。
/F 指定要强行终止的进程。
/FI filter 指定筛选进或筛选出查询的的任务。
/PID process id 指定要终止的进程的PID。
/IM image name 指定要终止的进程的图像名。通配符 '*'可用来指定所有图像名。
/T Tree kill: 终止指定的进程和任何由此启动的子进程。
/? 显示帮助/用法。
筛选器:
筛选器名 有效运算符 有效值
----------- --------------- --------------
STATUS eq, ne 运行 | 没有响应
IMAGENAME eq, ne 图像名
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 时,
mm - 钟,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用,单位为 KB
USERNAME eq, ne 用户名,格式为
[domain\\]user
MODULES eq, ne DLL 名
SERVICES eq, ne 服务名
WINDOWTITLE eq, ne 窗口标题
注意: 只有带有筛选器的情况下,才能跟 /IM 切换使用通配符 '*'。
注意: 远程进程总是要强行终止,
不管是否指定了 /F 选项。
2示例
例如:
TASKKILL /S system /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM QQ.exe
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\\SYSTEM" /IM notepad.exe
TASKKILL /S system /U domain\ame /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Hostname eq, ne 任何有效字符串。
状态 eq, ne RUNNING|NOT RESPONDING
Imagename eq, ne 任何有效字符串。
PID eg, ne, gt, lt, ge, le 任何有效的正整数。
Session eg, ne, gt, lt, ge, le 任何有效的会话数。
CPUTime eq, ne, gt, lt, ge, le hh:mm:ss 格式的有效时间。mm 参数和 ss 参数应在 0 到 59 之间,hh 参数可以是任何一个有效的无符号的数值。
Memusage eg, ne, gt, lt, ge, le 任何有效的整数。 至于eq,ne,ge,le,gt,lt,是等于,不等于,不小于,不大于,大于,小于意思,主要是用来终止一组进程的,不过这个参数可以通过多组taskkill 来实现。
查找进程是否存在BAT
tasklist |find "Pubwin1.exe" && goto 标签1 || goto 标签2
:标签1
echo 标签1
pause
:标签2
echo 标签2
pause
得到PID并结束的话
是不是你要先看到PID然后选择要结束哪一个?
如果是这个意思
那么请试下这个批处理:
@echo off
echo for each ps in GetObject("winmgmts:\\\\.\\root\\cimv2:win32_process").instances_>___L_.vbs
echo WScript.Echo f(ps.handle,5)^&f(ps.name,15)^&ps.executablepath:Next>>___L_.vbs
echo Function f(str,n):f=str:for i=1 to n-len(str):f=f^&" ":Next:End Function>>___L_.vbs
cscript //nologo ___L_.vbs | find /V "cscript.exe" | find /V "find.exe" >C:\\_proc_list.txt
del ___L_.vbs
type C:\\_proc_list.txt
echo.
echo Please enter the PID of the process to be terminated , "0" to quit ...
set /p cmd=
if "%cmd%"==0 del C:\\_proc_list.txt && goto :EOF
call :Tmnt %cmd%
del C:\\_proc_list.txt
goto :EOF
:Tmnt
:start
if %1.==. goto :EOF
type C:\\_proc_list.txt | find "%1" >nul && start /B ntsd -c q -p %1
shift
goto start
goto :EOF
使用时程序先列举出所有的程序PID,名字和可执行路径
然后你可以输入PID来结束指定的进程
如果你想结束多个进程
那么以空格分隔你的多个PID
举例来说
结束123,456和7三个进程时
你可以输入
123 456 7
然后这三个进程被强制结束
又比如干掉qq:
taskkill /im /f qq.exe
这样就可以干掉qq了,taskkill是命令名,/im是参数指终止某个进程名的参数,/f强制终止进程的参数