让bat批处理后台运⾏,不显⽰cmd窗⼝(完全静化)
背景:由于我有某云的服务器(win server), 上⾯挂有好⼏个程序, 为了更好的监控他们, 我使⽤了⼀个最笨的⽅法, 就是下⾯的⽅法。实现:我要监控的程序有三个, 成为ABC吧, 下⾯先把三个程序的监控写好, 我使⽤的是。
main.vbs
1 2 3 4Set 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
ping127.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。每当检测到有进程挂的时候会第⼀时间发送邮件提醒。