bat检查某进程个数,如超过限制值则杀掉

it2023-12-26  73

情景:开发的程序,当多个用户同时使用下载证书的时候,会产生很多winword.exe进程(他并没有自动释放,有20个以上),导致后面无法正常下载证书。于是乎想到这个方法

for /F %%i in ( 'tasklist ^| findstr winword.exe ^| find /c /v "" ') do ( set commitid=%%i) set /a limitNum=10 set /a winwordNum=%commitid% echo %winwordNum% if "%winwordNum%" gtr "%limitNum%" ( taskkill /f /im winword.exe ) ::winword.exe超过10个,则将其全部杀死 ::使用任务计划程序,每隔1分钟调用本bat脚本

其中踩到的坑:

1、batch的执行语句后结果赋值,推荐使用for来操作赋值给变量。

2、tasklist 后面的 | 符号,要变成  ^|  转义,否则报语法错误。

3、如果写错语法,你就算结尾加上pause,他双击执行后 会照样一闪而过。

4、if 对比的时候, 加双引号,然后采用%var% 都用变量的形式来对比。之前用变量和纯数字对比不懂为啥,没有执行if体里面的语句。

参考资料:

https://www.cnblogs.com/zndxall/p/9188300.html

最新回复(0)