楼 主
批处理进程监视的一种方法
发表于 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
状态 离线
第 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
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正