让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。

每当检测到有进程挂的时候会第一时间发送邮件提醒。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM