Board logo

标题: [系统相关] 批处理怎么监控进程? [打印本页]

作者: 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

  1. @Echo Off&Setlocal Enabledelayedexpansion
  2. :re
  3. timeout /t 2
  4. for /f "tokens=1,2" %%i in ('tasklist ^| findstr "a.exe"') do (
  5. set /a n+=1
  6. set pid!n!=%%j
  7. )
  8. if %n%==3 taskkill /f /pid %pid1% /pid %pid2%&set n=0&goto :re
  9. 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://bbs.bathome.net/) Powered by Discuz! 7.2