利用tasklist和taskkill实现判断进程数按名称杀掉进程

利用tasklist和taskkill实现判断进程数按名称杀掉进程@echooffsetexe=firefox.exeset/anum=5for/f%%iin(‘tasklist^|find/c/i”%exe%”‘)doif%%igtr%num%taskkill/f/im%exe%TASKKILL[/Ssystem[/Uusername[/P[password]]]]{[/FIfilter][/PIDprocessid|/IMimagename]}[/T][/F]描述:使用该工具按

大家好,又见面了,我是你们的朋友全栈君。

问题来源

由于很多浏览器经常出现进程不能正常退出的问题,如果一个一个关闭进程效率太低,因此,设想做一个批处理判断当同名进程数超过一定数量时,批量关闭进程。
当然这里只考虑一次性批量关闭进程的问题,不考虑实时监控。

批处理

@echo off
set exe=firefox.exe
set /a num =5
for /f %%i in ('tasklist^|find /c /i "%exe%"') do if %%i gtr %num% taskkill /f /im %exe% 

解读

批处理的主要核心是tasklist命令和taskkill命令。
先使用tasklist |find /c /i "firefox.exe"得到firefox.exe进程的数量。

C:\Users\Administrator>tasklist |find /c /i  "firefox.exe"
6

然后判断进程数量是否大于我们指定的数量,大于则执行命令taskkill /f /im "firefox.exe"

tasklist命令

TASKLIST [/S system [/U username [/P [password]]]]
[/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]

描述:
该工具显示在本地或远程机器上当前运行的进程列表。

参数列表:
/S system 指定连接到的远程系统。

/U [domain]user 指定应该在哪个用户上下文执行这个命令。

/P [password] 为提供的用户上下文指定密码。如果省略,则
提示输入。

/M [module] 列出当前使用所给 exe/dll 名称的所有任务。
如果没有指定模块名称,显示所有加载的模块。

/SVC 显示每个进程中主持的服务。

/APPS 显示 Microsoft Store 应用及其关联的进程。

/V 显示详细任务信息。

/FI filter 显示一系列符合筛选器
指定条件的任务。

/FO format 指定输出格式。
有效值: “TABLE”、“LIST”、“CSV”。

/NH 指定列标题不应该
在输出中显示。
只对 “TABLE” 和 “CSV” 格式有效。

/? 显示此帮助消息。

筛选器:
筛选器名称 有效运算符 有效值
———– ————— ————————–
STATUS eq, ne RUNNING | SUSPENDED
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名称
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号
SESSIONNAME eq, ne 会话名称
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 用户名,格式为
[域]用户
SERVICES eq, ne 服务名称
WINDOWTITLE eq, ne 窗口标题
模块 eq, ne DLL 名称

注意: 当查询远程计算机时,不支持 “WINDOWTITLE” 和 “STATUS”
筛选器。

Examples:
TASKLIST
TASKLIST /M
TASKLIST /V /FO CSV
TASKLIST /SVC /FO LIST
TASKLIST /APPS /FI “STATUS eq RUNNING”
TASKLIST /M wbem*
TASKLIST /S system /FO LIST
TASKLIST /S system /U 域\用户名 /FO CSV /NH
TASKLIST /S system /U username /P password /FO TABLE /NH
TASKLIST /FI “USERNAME ne NT AUTHORITY\SYSTEM” /FI “STATUS eq running”

taskkill命令

`TASKKILL [/S system [/U username [/P [password]]]] { 
     [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]`

描述:
    使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:
    /S    system           指定要连接的远程系统。

    /U    [domain\]user    指定应该在哪个用户上下文执行这个命令。

    /P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                           输入。

    /FI   filter           应用筛选器以选择一组任务。
                           允许使用 "*"。例如,映像名称 eq acme*

    /PID  processid        指定要终止的进程的 PID。
                           使用 TaskList 取得 PID。

    /IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                           指定所有任务或映像名称。

    /T                     终止指定的进程和由它启用的子进程。

    /F                     指定强制终止进程。

    /?                     显示帮助消息。

筛选器:
    筛选器名      有效运算符                有效值
    -----------   ---------------           -------------------------
    STATUS        eq, ne                    RUNNING |
                                            NOT RESPONDING | UNKNOWN
    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                    窗口标题

    说明
    ----
    1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
    2) 远程进程总是要强行 (/F) 终止。
    3) 当指定远程机器时,不支持 "WINDOWTITLE""STATUS" 筛选器。

例如:
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    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 域\用户名 /FI "用户名 ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137798.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看crontab运行状态

    查看crontab运行状态

    2021年11月9日
    221
  • Manacher算法_马拉车图

    Manacher算法_马拉车图参考:https://www.cnblogs.com/xiuyangleiasp/p/5070991.html先了解下数组P[i],id,mx的含义,下面的红字部分Manacher算法利用一个辅助数组P[i]表示以字符Str[i]为中心的最长回文子串的最右(左)字符到Str[i]的距离(包括Str[i])以abbc为例,首先预处理变成:$#a#b#b#c#(预处理是为了便于处理)可…

    2022年10月23日
    0
  • SOAP协议简介[通俗易懂]

    SOAP协议简介[通俗易懂]SOAP 简介SOAP是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换。或者更简单地说:SOAP是用于访问网络服务的协议。您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:XMLXML命名空间如果您希望首先学习这些项目,请访问我们的《XML教程》。什么是SOAP?SOAP指简易对象访问协议SOAP是一种通信协议SOAP用于应用程序之间的通信S…

    2022年7月24日
    10
  • 验证手机号码的正则表达式_正则表达式验证手机号码格式

    验证手机号码的正则表达式_正则表达式验证手机号码格式使用场景在需要手机登录,验证等场景时,需要先在前端对输入手机号码进行验证!验证的正则表达式letphoneCodeVerification=/^[1][3,4,5,7,8][0-9]{9}$/;应用实例functioncodeVerification(phone){letphoneCodeVerification=/^[1…

    2022年9月15日
    1
  • linux0.11_linux常用命令

    linux0.11_linux常用命令前言所有的UnixLike系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的

    2022年7月28日
    4
  • Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程

    Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程本教程介绍Pig的安装和使用。hdfs虽说是一个文件空间,但是我们每次要查看hdfs上的文件的时候都要输入一大串命令,比如一个简单的ls都需要输入:hdfsdfs-ls/,而且还不能cd到某个目录,这样就造成了每次ls都要带上全路径的麻烦,能不能有一个工具可以模拟linux下的shell呢?Pig就实现了这样的需求,可以直接ls,可以cd到某个目录。并且Pig还创造了PigLatin语言,可以通过Pig写一个类似存储过程的MapReduce的Job,pig会自动帮你把这个job翻译成MapR

    2022年5月9日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号