[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理怎样检测某程序是否运行,如没有则发送邮件通知?

求助,我现在这样一个问题。
在某台服务器上,有运行一个程序(AB.EXE)
因为特殊原因,这个程序时常会异常退出。这样就影响到了日常工作。
现在我想通过批处理来定时检测这个AB程序是否在进程中正常运行。
如果有在运行,该批处理不做任何动作退出即可。
如果该程序退出,没有运行,则需要批处理发封邮件给指定邮箱。告知相关人员程序出错,需要及时检查。。
小弟在此多谢各位了。
  1. tasklist /nh|find /i "QQ.exe"
  2. if ERRORLEVEL 1 (start D:\1.vbs) else (exit)
复制代码
判断QQ是否在运行,不在的话就运行1.VBS执行发邮件通知·

1.VBS的代码如下:
  1. Const WshRunning = 0
  2. Set objEmail = CreateObject("CDO.Message")
  3. Set objShell = CreateObject("WScript.Shell")
  4. Set objExec = objShell.Exec("ipconfig")
  5. CurrentTime=Hour(Now)&":"&Minute(Now)&":"&Second(Now)&"--"
  6. Do While objExec.Status = WshRunning
  7.         WScript.Sleep 100
  8. Loop
  9. If objExec.ExitCode = 0 Then
  10.         Call SendMail("user@163.com","user2@163.com",CurrentTime &"非正常运行~",_
  11.         CurrentTime & "请检查~","smtp.163.com","user","Password")
  12. End If
  13.         
  14. Sub SendMail(strFrom,strTo,strSubject,strBody,strSMTPServer,strUser,strPassword)
  15.         objEmail.From = strFrom '发件人
  16.         objEmail.To = strTo '收件人
  17.         objEmail.Subject = strSubject '主题
  18.         objEmail.Textbody = strBody '内容
  19.         objEmail.Configuration.Fields.Item _
  20.             ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  21.         objEmail.Configuration.Fields.Item _
  22.             ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
  23.                 strSMTPServer
  24.         objEmail.Configuration.Fields.Item _
  25.             ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser '用户名
  26.         objEmail.Configuration.Fields.Item _
  27.             ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword '密码
  28.         objEmail.Configuration.Fields.Item _
  29.             ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '明文验证
  30.         objEmail.Configuration.Fields.Item _
  31.             ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
  32.         objEmail.Configuration.Fields.Update
  33.         objEmail.Send
  34. End Sub
复制代码

[ 本帖最后由 jijo 于 2009-12-21 22:31 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

谢谢版主加分鼓励。
嘿嘿··

TOP

是的·其实非常的简单。昨晚已经调试成功了~哈哈~~
  1. tasklist /nh|find /i "QQ.exe"
  2. if ERRORLEVEL 1 (start D:\1.vbs) else (exit)
复制代码
判断QQ是否在运行,不在的话就运行1.VBS执行发邮件通知·

[ 本帖最后由 jijo 于 2009-12-21 10:52 编辑 ]

TOP

回复 15楼 的帖子

使用tasklist 判断存在即可。

TOP

嗯,刚刚我发的那个VBS脚本就是如果运行出错就发邮件通知.将错误消息发送给用户.如果运行成功也发一个成功邮件给用户.
这样正确错误的邮件都发送给用户,如果定时间隔短些,那数量就相当多了。

目前先需要解决的问题是,判断程序AB.EXE是否在运行,如果程序在运行批处理退出不做任何操作,如果程序不在进程中,则发送邮件通知。

呵呵~研究ing...

TOP

回复 13楼 的帖子

发邮件大部分都用类似的VBS脚本,可以在微软的网站上找到例子:
http://www.microsoft.com/china/t ... center/default.mspx
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. Const WshRunning = 0
  2. Set objEmail = CreateObject("CDO.Message")
  3. Set objShell = CreateObject("WScript.Shell")
  4. Set objExec = objShell.Exec("ipconfig /al")
  5. Do While objExec.Status = WshRunning
  6. WScript.Sleep 100
  7. Loop
  8. If objExec.ExitCode = 0 Then
  9. Call SendMail("user@163.com","user@hotmail.com","命令执行成功",_
  10. "命令执行成功","smtp.163.com","user","password")
  11. Else
  12. strErrorMsg = objExec.StdOut.ReadAll
  13. Call SendMail("user@163.com","user@hotmail.com;user@163.com","命令执行失败",_
  14. strErrorMsg,"smtp.163.com","user","password")
  15. End If
  16. Sub SendMail(strFrom,strTo,strSubject,strBody,strSMTPServer,strUser,strPassword)
  17.         objEmail.From = strFrom '发件人
  18.         objEmail.To = strTo '收件人
  19.         objEmail.Subject = strSubject '主题
  20.         objEmail.Textbody = strBody '内容
  21.         objEmail.Configuration.Fields.Item _
  22.             ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  23.         objEmail.Configuration.Fields.Item _
  24.             ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
  25.                 strSMTPServer
  26.         objEmail.Configuration.Fields.Item _
  27.             ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser '用户名
  28.         objEmail.Configuration.Fields.Item _
  29.             ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword '密码
  30.         objEmail.Configuration.Fields.Item _
  31.             ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '明文验证
  32.         objEmail.Configuration.Fields.Item _
  33.             ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1 '加密连接            
  34.         objEmail.Configuration.Fields.Item _
  35.             ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  36.         objEmail.Configuration.Fields.Update
  37.         objEmail.Send
  38. End Sub
复制代码



这个是我找到的,是vbs脚本~大家参考参考哈~
谢谢管理员给的例子,我研究去咯~

[ 本帖最后由 jijo 于 2009-12-20 23:17 编辑 ]

TOP

回复 10楼 的帖子

参考:VBS判断指定日志文件是否定时更新并发送邮件通知
http://bbs.bathome.net/thread-5972-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10楼 的帖子

只要运行一次就退出即可

TOP

原帖由 Batcher 于 2009-12-20 22:40 发表
参考:批处理发送飞信到手机
http://bbs.bathome.net/thread-6820-1-1.html


哇塞,管理员都来了。呵呵。。
我想实现的功能就是监控某程序是否在运行,没运行就发封邮件通知就好了。。
飞信的功能是好。但是如果半夜程序挂了,那不是飞信不停的发短信了?

TOP

参考:批处理发送飞信到手机
http://bbs.bathome.net/thread-6820-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哈哈,斑竹怎么拉哟…

TOP

.......................  代码 只能你自己写哦~~  

   真不行  把斑竹拉来。

TOP

各位高手,帮帮小弟俺丫…(>_<)

TOP

嗯,谢谢楼上的回复。那你能否提供下代码文件,我参考一下…(^-^)

TOP

返回列表