让bat批处理后台运行,不显示cmd窗口(完全静化)
背景:由于我有某云的服务器(win server), 上面挂有好几个程序, 为了更好的监控他们, 我使用了一个最笨的方法, 就是下面的方法。
实现:我要监控的程序有三个, 成为ABC吧, 下面先把三个程序的监控写好, 我使用的是python邮件告警和bat的进程监控。
main.vbs
1
2
3
4
|
Set ws = CreateObject( "Wscript.Shell" ) ws.run "cmd /c A.bat" ,0 ws.run "cmd /c B.bat" ,0 ws.run "cmd /c C.bat" ,0 |
这是vbs, 作用就是在这里调用运行bat时,是进入后台运行(就是完全不在前台显示这几个bat的cmd的界面)
main.bat
1
2
3
4
5
6
|
@ echo off<nul 3>nul :one echo % date :~0,10% % time :~0,-3% cheng守护进程正在监控系统... start main.vbs ping 127.0.0.1 -n 10>nul goto one |
留意一下就会发现, 这是一个死循环, 是的。因为我并没有打算把vbs扔进计划任务跑, 我是使用一个bat,每隔10秒 执行一下main.vsb文件, 而vbs则会去跑那三个监控告警批处理。
第3行:显示当前系统时间与提示信息。
第4行:运行vbs脚本。
第5行:sleep 10秒,这是有点奇怪的写法,使用了ping中的功能。
运行
1
|
跑main.bat |
按照之前,不使用vbs调 直接运行那几个监控bat的时候会连续闪弹cmd窗口,现在只会看到一个cmd在运行, 后台运行的是那三个bat。
每当检测到有进程挂的时候会第一时间发送邮件提醒。