[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

用tasklist查找,用NC(第三方程序)提交数据包即可。通过提交数据包,该法可扩展为时时短信通知

TOP

谢谢楼上的,我现在只实现了用tasklist查找程序,如果没运行则启动该程序,还没达到邮件通知的功能,实时短信哇…那不是更麻烦了…

TOP

回复 3楼 的帖子

以NC方式的话,邮件,短信只不过是数据包不同的问题。我用的方法并不是借助本地已经设置好的邮箱账号,而是通过NC提交数据包模拟登陆邮箱后发邮件同样也能模拟能够提供短信通知的网站发送短信。

TOP

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

TOP

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

TOP

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

   真不行  把斑竹拉来。

TOP

哈哈,斑竹怎么拉哟…

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

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


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

TOP

回复 10楼 的帖子

只要运行一次就退出即可

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

  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

回复 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

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

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

呵呵~研究ing...

TOP

返回列表