中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 12:14
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理进程监视的一种方法 查看 892 回复 3
楼 主 批处理进程监视的一种方法 发表于 2008-02-14 12:28 ·  中国 上海 浦东新区 电信
新手上路
积分 19
发帖 7
注册 2007-07-25 19:21
19年会员
UID 94025
性别 男
状态 离线
如果简单的用循环来监视,效率不高。因此就想到了结合at来使用。我的要求是批处理运行时判断是否有某个进程,如没有则运行,否则退出。
具体做法是这样。运行时用tasklist判断进程是否存在。如存在则使用at命令,在几分钟后运行批处理本身。这样就可以达到监视的目的了。
核心就是这句
at %hou%:%min% %current_dir%batr.cmd> nul
%min%是当前时间加上2,如果%min%大于59,%hou%大于23,只须处理一下就可以了。
这个程序效率还行,只在运行时才占用资源,大部分时间是不占资源的。大家觉得这种方法可取吗?
2 发表于 2008-02-14 12:36 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
比循环好呀~不过需要启动任务计划,没有开的就不能运行。
3 发表于 2008-02-14 13:02 ·  中国 北京 朝阳区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
AT一般都当作垃圾服务和谐掉了..
4 发表于 2008-02-14 15:01 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
监视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
第一高手 第二高手

论坛跳转: