高分求一个VBS或者是批处理脚本监控端口的脚本
我公司的一个生产管理系统最近老是自己挂掉,端口是211.情况如下,以前想过用VBS监控进程的方式来监视软件是否挂了,可是还是不能解决问题,因为进程还在,但211端口没了....
我公司的一个生产管理系统最近老是自己挂掉,端口是211.情况如下,以前想过用VBS监控进程的方式来监视软件是否挂了,可是还是不能解决问题,因为进程还在,但211端口没了.所以想请高手帮忙解决,我的要求很简单.
1.假如监控211端口不存在了,那么开始判断slbroom.exe进程是否存在?如果存在则结束进程,然后再启动slbroom.exe,否则直接启动slbroom.exe
2.并且每隔2秒监视端口.
3.最好是VBS当然也可以是批处理.
4.为了酬谢特送100分,再此说声谢谢. 展开
1.假如监控211端口不存在了,那么开始判断slbroom.exe进程是否存在?如果存在则结束进程,然后再启动slbroom.exe,否则直接启动slbroom.exe
2.并且每隔2秒监视端口.
3.最好是VBS当然也可以是批处理.
4.为了酬谢特送100分,再此说声谢谢. 展开
2个回答
展开全部
批处理:
' 2>nul 3>nul&@echo off&cls
'&if "%1"=="h" goto :on
'&start wscript.exe /nologo /e:vbs %0
'&exit
:s=wscript.scriptfullname
:set oshell=createobject("wscript.shell")
:oshell.run "cmd /c"&""""&s&""""&" h",0,false
:on error resume next
:lp
'&netstat -an|find "211"
'&if %errorlevel%==0 (
'& for /f "delims=" %%i in ('netstat -an^|find "211"') do (
'& for /f "tokens=3 delims=: " %%j in ("%%i") do (
'& if not %%j==211 goto findexe
'))) else goto findexe
'&goto ending
:findexe
'&tasklist|find /i "slbroom.exe"
'&if %errorlevel%==0 (
'& taskkill /f /im slbroom.exe
'& start "slbroom.exe"
') else start "slbroom.exe"
:ending
'&rem pause
'&ping /n 2 127.1 >nul
'&goto lp
说明:把倒数5行和6行的“start slbroom.exe”后面的slbroom.exe前加上它的完整路径,如果slbroom.exe不是环境路径中的目录里。
运行后,bat就隐藏运行,结束这个bat的话,就在任务管理器,找到cmd.exe,结束进程就可以了。
如果原来的运行找不到slbroom.exe,上面代码已经略微完善了一下,就可以了。
' 2>nul 3>nul&@echo off&cls
'&if "%1"=="h" goto :on
'&start wscript.exe /nologo /e:vbs %0
'&exit
:s=wscript.scriptfullname
:set oshell=createobject("wscript.shell")
:oshell.run "cmd /c"&""""&s&""""&" h",0,false
:on error resume next
:lp
'&netstat -an|find "211"
'&if %errorlevel%==0 (
'& for /f "delims=" %%i in ('netstat -an^|find "211"') do (
'& for /f "tokens=3 delims=: " %%j in ("%%i") do (
'& if not %%j==211 goto findexe
'))) else goto findexe
'&goto ending
:findexe
'&tasklist|find /i "slbroom.exe"
'&if %errorlevel%==0 (
'& taskkill /f /im slbroom.exe
'& start "slbroom.exe"
') else start "slbroom.exe"
:ending
'&rem pause
'&ping /n 2 127.1 >nul
'&goto lp
说明:把倒数5行和6行的“start slbroom.exe”后面的slbroom.exe前加上它的完整路径,如果slbroom.exe不是环境路径中的目录里。
运行后,bat就隐藏运行,结束这个bat的话,就在任务管理器,找到cmd.exe,结束进程就可以了。
如果原来的运行找不到slbroom.exe,上面代码已经略微完善了一下,就可以了。
力控科技
2024-08-19 广告
2024-08-19 广告
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中...
点击进入详情页
本回答由力控科技提供
展开全部
如果vbs代码相对完美点
批处理代码相对简单
代码贴出来百度可能会屏蔽,占贴,完成代码后短消息给你。
@echo off
if not "%1" == "h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h",0)(window.close)&&exit
:s
netstat -ano|find ":211 "&&(set Port=Yes)||(set Port=No)
if "%Port%"=="No" start "" "你的路径\slbroom.exe"
if "%Port%"=="Yes" tasklist.exe|find /i "slbroom.exe"&&(taskkill.exe /f /im slbroom.exe&&start "" "你的路径\slbroom.exe")||(start "" "你的路径\slbroom.exe")
ping -n 3 127.0.1>nul 2>nul
goto:s
批处理代码相对简单
代码贴出来百度可能会屏蔽,占贴,完成代码后短消息给你。
@echo off
if not "%1" == "h" mshta vbscript:createobject("wscript.shell").run("%~sf0 h",0)(window.close)&&exit
:s
netstat -ano|find ":211 "&&(set Port=Yes)||(set Port=No)
if "%Port%"=="No" start "" "你的路径\slbroom.exe"
if "%Port%"=="Yes" tasklist.exe|find /i "slbroom.exe"&&(taskkill.exe /f /im slbroom.exe&&start "" "你的路径\slbroom.exe")||(start "" "你的路径\slbroom.exe")
ping -n 3 127.0.1>nul 2>nul
goto:s
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询