Windows下通过bat批处理文件和vbs脚本实现守护进程
2017-10-27 16:26
931 查看
问题描述:
客户要求windows客户端在宕机时能自动重启,不需要人为去手动重新开启。
想法:
1、通过客户端代码增加守护进程的方法实现,但是之前windows下没有过相关经验;
2、通过脚本的方法实现;
实现:
1、start.bat
测试客户端名称为ISMClient.exe,安装目录为
C:\ISMClient\ISMClient.exe(最好不要有中文)。
运行时如果检查到有ISMClient.exe在运行,则算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start1.bat)
注意:红色部分可根据自己的需求修改。
见代码(start.bat)
@echo off
set _task=ISMClient.exe
set _svr=C:\ISMClient\ISMClient.exe
set _des=start1.bat
:checkstart
SET status=1
(TASKLIST|FIND /I "%_task%"||SET status=0) 2>nul 1>nul
ECHO %status%
IF %status% EQU 1 (goto checkag ) ELSE (goto startsvr)
:startsvr
echo %time%
echo ********程序开始启动********
echo 程序重新启动于 %time% ,请检查系统日志 >> restart_service.txt
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
set/p=.<nul
for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
del %_des% /Q
echo ********程序启动完成********
goto checkstart
:checkag
echo %time% 程序运行正常,10秒后继续检查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
goto checkstart
运行start.bat批处理文件,已经可以实现功能了。但是其cmd运行窗口一直显示,看起来肯定不舒服。所以需要想办法将其隐藏,这里采用vbs脚本(见第2点)。
2、start.vbs
start.vbs比较简单,直接见代码吧。
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\start.bat",vbhide
注意: D:\start.bat 为第1点中批处理文件的存放地址(最好不要有中文)
运行start.vbs,题述功能可以实现了。
顺便提一句,由于cmd窗口被隐藏了,新手可能不知道从哪里去关闭上面的操作,现提供一个比较粗犷的方法吧。
(1)打开任务管理器,结束wscript.exe进程;
(2)打开任务管理器,结束cmd.exe进程;
本文是整理参考网上的代码实现的,在此对原文、源代码的作者表示感谢。
客户要求windows客户端在宕机时能自动重启,不需要人为去手动重新开启。
想法:
1、通过客户端代码增加守护进程的方法实现,但是之前windows下没有过相关经验;
2、通过脚本的方法实现;
实现:
1、start.bat
测试客户端名称为ISMClient.exe,安装目录为
C:\ISMClient\ISMClient.exe(最好不要有中文)。
运行时如果检查到有ISMClient.exe在运行,则算成自己的进程名,如果进程宕了就过会自动重启(会在当前目录下生成一个start1.bat)
注意:红色部分可根据自己的需求修改。
见代码(start.bat)
@echo off
set _task=ISMClient.exe
set _svr=C:\ISMClient\ISMClient.exe
set _des=start1.bat
:checkstart
SET status=1
(TASKLIST|FIND /I "%_task%"||SET status=0) 2>nul 1>nul
ECHO %status%
IF %status% EQU 1 (goto checkag ) ELSE (goto startsvr)
:startsvr
echo %time%
echo ********程序开始启动********
echo 程序重新启动于 %time% ,请检查系统日志 >> restart_service.txt
echo start %_svr% > %_des%
echo exit >> %_des%
start %_des%
set/p=.<nul
for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
del %_des% /Q
echo ********程序启动完成********
goto checkstart
:checkag
echo %time% 程序运行正常,10秒后继续检查..
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs
cscript //b //nologo %tmp%\delay.vbs 10000
goto checkstart
运行start.bat批处理文件,已经可以实现功能了。但是其cmd运行窗口一直显示,看起来肯定不舒服。所以需要想办法将其隐藏,这里采用vbs脚本(见第2点)。
2、start.vbs
start.vbs比较简单,直接见代码吧。
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c D:\start.bat",vbhide
注意: D:\start.bat 为第1点中批处理文件的存放地址(最好不要有中文)
运行start.vbs,题述功能可以实现了。
顺便提一句,由于cmd窗口被隐藏了,新手可能不知道从哪里去关闭上面的操作,现提供一个比较粗犷的方法吧。
(1)打开任务管理器,结束wscript.exe进程;
(2)打开任务管理器,结束cmd.exe进程;
本文是整理参考网上的代码实现的,在此对原文、源代码的作者表示感谢。
相关文章推荐
- windows下通过bat脚本和计划任务实现设置某一服务的守护进程
- Windows下通过bat脚本实现自动上传文件到ftp服务器
- Windows系统使用vbs脚本或bat脚本强制杀死指定所有进程 vbs实现循环持续写入内容到vbs打开开的记事本 使用vbs、bat添加windows计划任务 使用cmd schtasks命令添加windows计划任务
- 技巧:利用windows下的bat批处理文件实现一拖得功能
- 在Windows、Linux下,分别利用BAT批处理文件和Shell脚本,生成类似“20150605_111327.txt”命名的文件
- windows bat脚本 脚本实现复制工程文件到客户电脑,安装tomcat服务,还原mysql数据库文件,实现一键启动网页工程
- Windows使用bat批处理实现守护进程脚本分享
- java调用windows系统的批处理(.bat文件) 和 linux系统的shell脚本(.sh文件)
- windows环境下批处理实现守护进程
- windows环境下批处理实现守护进程
- windows环境下批处理实现守护进程
- 利用批处理文件和 vbs 脚本实现网站视频自动录制
- BAT(批处理脚本)实现文件的安装和卸载(一)
- windows环境下批处理实现守护进程
- 闲来无事之--记用BAT(批处理脚本)实现文件下载功能
- 通过vbs脚本实现批处理后台运行
- 利用bat脚本语言实现windows下文件的可靠复制与删除
- Windows下递归搜索文件及其所在目录 .bat脚本实现
- 利用批处理文件和 vbs 脚本实现网站视频自动录制