Board logo

标题: [原创] 【续】[一日一教学](35)关闭指定进程:taskkill [打印本页]

作者: Hello123World    时间: 2011-10-17 16:58     标题: 【续】[一日一教学](35)关闭指定进程:taskkill

本帖最后由 Hello123World 于 2011-10-21 11:21 编辑

【原】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-2576-1-1.html
【续】[一日一教学]批处理系列帖子索引 http://bbs.bathome.net/thread-13798-1-1.html


帮助信息:
  1. TASKKILL [/S system [/U username [/P [password]]]]
  2.          { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
  3. 描述:
  4.     使用该工具按照进程 ID (PID) 或映像名称终止任务。
  5. 参数列表:
  6.     /S    system           指定要连接的远程系统。
  7.     /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。
  8.     /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
  9.                            输入。
  10.     /FI   filter           应用筛选器以选择一组任务。
  11.                            允许使用 "*"。例如,映像名称 eq acme*
  12.     /PID  processid        指定要终止的进程的 PID。
  13.                            使用 TaskList 取得 PID。
  14.     /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
  15.                            指定所有任务或映像名称。
  16.     /T                     终止指定的进程和由它启用的子进程。
  17.     /F                     指定强制终止进程。
  18.     /?                     显示帮助消息。
  19. 筛选器:
  20.     筛选器名      有效运算符                有效值
  21.     -----------   ---------------           -------------------------
  22.     STATUS        eq, ne                    RUNNING |
  23.                                             NOT RESPONDING | UNKNOWN
  24.     IMAGENAME     eq, ne                    映像名称
  25.     PID           eq, ne, gt, lt, ge, le    PID 值
  26.     SESSION       eq, ne, gt, lt, ge, le    会话编号。
  27.     CPUTIME       eq, ne, gt, lt, ge, le    CPU 时间,格式为
  28.                                             hh:mm:ss。
  29.                                             hh - 时,
  30.                                             mm - 分,ss - 秒
  31.     MEMUSAGE      eq, ne, gt, lt, ge, le    内存使用量,单位为 KB
  32.     USERNAME      eq, ne                    用户名,格式为 [domain\]user
  33.     MODULES       eq, ne                    DLL 名称
  34.     SERVICES      eq, ne                    服务名称
  35.     WINDOWTITLE   eq, ne                    窗口标题
  36.     说明
  37.     ----
  38.     1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
  39.     2) 远程进程总是要强行 (/F) 终止。
  40.     3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。
  41. 例如:
  42.     TASKKILL /IM notepad.exe
  43.     TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
  44.     TASKKILL /F /IM cmd.exe /T
  45.     TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
  46.     TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
  47.     TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
  48.     TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
复制代码
命令概括:

taskkill,意为“杀死进程”,引申为“注销进程”;
/pid,全英文process id,意为“进程id”;(id有身份证的意思,全英文未知)。
/im,全英文imagename,意为“图像名称”,引申为“进程名”;
/t,全英文tree(不确定),意为“树”,引申为“进程树”
/f,全英文force,意为“强制”。

参数详解:

1.利用进程pid结束进程。
先查询要结束进程的pid,然后结束对应pid的进程。

先查询pid:
  1. tasklist |find /i "qq.exe"
复制代码
效果:QQ.exe                        5876 Console                    1     85,616 K

结束pid对应的进程
  1. taskkill /pid 5876
复制代码
注意:pid是一个变化的值,qq.exe的pid不会永远是5876,重启一次qq.exe,pid就会发生变化。
这是因为pid是一个随机值。


2.利用进程名结束进程

用pid结束进程实在是一件啰嗦事,知道进程名还要查pid,每个进程的pid还不是个定值。——鸡肋、鸡肋……

对比/pid参数,/im参数是那么的可爱。

同样是结束qq.exe(结束了记得再打开qq)
  1. taskkill /t /im qq.exe
复制代码
这里加上了/t参数。/t参数是用来结束对应进程的子进程。
qq.exe有子进程txplatform.exe,如果你只是单纯的结束qq.exe(不加/t参数),那么txplatform.exe就会驻留内存,占用内存空间。
qq.exe还算是客气的,如果遇上有子进程保护的进程,如果不加/t参数,是不能结束该进程的。

3.强制结束进程(未保存的信息会丢失)

当你修改了文本而没有保存(假设是用记事本在编辑文本),这时候你结束notepad.exe,notepad就会提示你“是否要保存修改的信息”。

记事本是如此的诚挚而啰嗦,如果你不在乎修改了的信息(临时填进去的一些信息)并且希望记事本不要罗里吧嗦,这时候就可以用/f参数——大声的对他说,未保存的信息俺不要了。
  1. taskkill /f /im notepad.exe
复制代码
4.过滤器(filter),你是如此的美丽(You are so beautiful)

之所以说/fi参数美丽,是因为她支持通配符——*,并且她让tasklist /v 有了价值。

按进程名结束进程。
  1. taskkill /fi "imagename eq notepad.exe"
复制代码
按窗口标题结束进程。
如果你打开了3个记事本,而要要结束其中一个记事本进程(窗口标题名中含有数字1),这时候怎么办(要求用命令行结束),这时候/fi参数可以帮忙。
  1. taskkill /fi "windowtitle eq 1*"
复制代码
fi参数还有不少的功能,这里不再详述,喜欢的朋友,可以自行研究。



扩展阅读:

1.其它结束进程的命令。
【Ntsd】        NTSD -c q -Pn

【Wmic】       wmic process where name="qq.exe" delete
作者: hjfeng1988    时间: 2011-10-21 10:16

taskkill /T 是tree kill的意思,终止此进程及由此引起的子进程。
作者: xslxslxsl    时间: 2011-11-7 21:49

这个非常有用的,谢谢指点。
作者: 0wlh0    时间: 2012-11-2 16:37

id = IDentity
作者: jacknomber1    时间: 2013-5-24 12:10

谢谢分享,,太感谢了,,,谢谢
作者: jacknomber1    时间: 2013-5-24 12:42

谢谢分享,,太感谢了,,,谢谢
作者: James_vivi    时间: 2013-10-29 22:48

多谢分享,这里面的东西太全了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2