Board logo

标题: 批处理进程监视的一种方法 [打印本页]

作者: andoor     时间: 2008-2-14 12:28    标题: 批处理进程监视的一种方法

如果简单的用循环来监视,效率不高。因此就想到了结合at来使用。我的要求是批处理运行时判断是否有某个进程,如没有则运行,否则退出。
具体做法是这样。运行时用tasklist判断进程是否存在。如存在则使用at命令,在几分钟后运行批处理本身。这样就可以达到监视的目的了。
核心就是这句
at %hou%:%min% %current_dir%batr.cmd> nul
%min%是当前时间加上2,如果%min%大于59,%hou%大于23,只须处理一下就可以了。
这个程序效率还行,只在运行时才占用资源,大部分时间是不占资源的。大家觉得这种方法可取吗?
作者: slore     时间: 2008-2-14 12:36
比循环好呀~不过需要启动任务计划,没有开的就不能运行。
作者: knoppix7     时间: 2008-2-14 13:02
AT一般都当作垃圾服务和谐掉了..
作者: fastslz     时间: 2008-2-14 15:01
监视calc.exe,没有该进程则运行
Set Ws = CreateObject("WScript.Shell")
Dim Wmi, Proc, Info, Flag, Target
Target = "calc.exe"
Flag = False
Set Wmi = Getobject("Winmgmts:")
Do
Set Proc = Wmi.Execquery("Select * From Win32_Process")
For Each Info In Proc
    If Info.Name = Target Then Flag = True
Next
If Flag = False Then
   Ws.Run Target
End If
Flag = False
Wscript.Sleep 1000
Loop