标题: [系统相关] 批处理怎么监控进程? [打印本页]
作者: xingke 时间: 2011-10-3 01:11 标题: 批处理怎么监控进程?
偶想做一个批处理,监控系统某一个进程数量比如a.exe,当他数量超过3的时候就关掉前面开的2个,保留最后一个,请问怎么实现哦
http://www.bathome.net/redirect.php?fid=5&tid=8154&goto=nextnewset我看了这个教程,也修改不来,请教高手怎么做这个批处理哦,谢啦
作者: xingke 时间: 2011-10-3 12:32
怎么没人理偶啊
作者: xingke 时间: 2011-10-3 14:05
dingdingdingddingdding
作者: cjiabing 时间: 2011-10-3 16:20
搜索“批处理与进程”里有介绍。
另外,上次似乎有个人问过此问题,你也可以搜索下。
上次问的可能是怎么判断进程是同一个进程,怎么判断程序一共开了多少个进程,大概是这样,你自己搜索下。
给你个思路:
1、监控某进程的数量,怎么判断这个进程的数量?找这个程序的名称,一般相同名称的往往是统一个程序产生的,但还不敢确定,再判断路径,或者说,同一个进程,这个进程的文件名、路径名、后缀名等都是一样的,这就有判断依据了——查找进程路径。
2、判断是同一个程序产生的进程了,那么就要计算总共产生了多少个进程,这个也不难,会set的都能搞定,教程里也有现成的。
3、怎么判断前面开的2个,和保留后面的一个?这个需要时间,也就是你说的监控,每一次运行发现有新的同一程序的进程,但PID不同的都要记录下来。一旦达到3个就可以处理了,这个也不难,会IF判断的都可以。
没时间帮你写代码,自己找教程看一下。 [原创]批处理与进程
作者: lvsehuaxue 时间: 2011-10-4 00:56
- @Echo Off&Setlocal Enabledelayedexpansion
- :re
- timeout /t 2
- for /f "tokens=1,2" %%i in ('tasklist ^| findstr "a.exe"') do (
- set /a n+=1
- set pid!n!=%%j
- )
- if %n%==3 taskkill /f /pid %pid1% /pid %pid2%&set n=0&goto :re
- if %n% lss 3 set n=0&goto :re
复制代码
作者: guaiwu 时间: 2011-10-4 15:22
我觉得应该从pid号下手。
作者: Batcher 时间: 2011-10-4 18:42
回复 6# guaiwu
不要老是觉得,必须动手去试验,试一试就会发现这个方向是错的,无法根据PID判断先后顺序。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |