中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理进程监视的一种方法 上一主题 | 下一主题
andoor
新手上路





积分 19
发帖 7
注册 2007-7-25
状态 离线
『楼 主』:  批处理进程监视的一种方法

如果简单的用循环来监视,效率不高。因此就想到了结合at来使用。我的要求是批处理运行时判断是否有某个进程,如没有则运行,否则退出。
具体做法是这样。运行时用tasklist判断进程是否存在。如存在则使用at命令,在几分钟后运行批处理本身。这样就可以达到监视的目的了。
核心就是这句
at %hou%:%min% %current_dir%batr.cmd> nul
%min%是当前时间加上2,如果%min%大于59,%hou%大于23,只须处理一下就可以了。
这个程序效率还行,只在运行时才占用资源,大部分时间是不占资源的。大家觉得这种方法可取吗?

2008-2-14 12:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

比循环好呀~不过需要启动任务计划,没有开的就不能运行。

2008-2-14 12:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 3 楼』:  

AT一般都当作垃圾服务和谐掉了..

2008-2-14 13:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

监视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




第一高手    第二高手

2008-2-14 15:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: