bat批处理命令查看两个进程是否存在

来源:互联网 发布:郭靖 杨过 知乎 编辑:程序博客网 时间:2024/05/22 06:32

第一次接触window下的批处理,领导要求写两个bat 批处理文件 互相守护 同时保证两个端口是运行的。
但是这俩个进程是相同的名称。
第一次尝试:
a.bat
判断当前是否有当前任务的进程
如果有 判断数量,调用B.bat
如果不存在 启用两个bat 调用要启动的程序 返回再判断。

@echo offgoto start :starttasklist -v | findstr /i netsafe_log > NUL  if ErrorLevel 1 ( echo  启动两个端口进程 进程不存在 call G:\BAT\start4437.bat call G:\BAT\start5775.bat   goto start) else (  echo "进程存在"  rem for /f %%i in ('tasklist^|findstr /i netsafe_log ) do set /a n+=1rem if %n% EQU 2 (    echo   两个进程存在    call G:\BAT\AAA\CheckRunning.bat)

B.bat

@echo offgoto start :starttasklist -v | findstr /i netsafe_log > NUL  if ErrorLevel 1 ( echo  启动两个端口进程 进程不存在 call G:\BAT\start4437.bat call G:\BAT\start5775.bat   goto start) else (  echo "进程存在"  rem for /f %%i in ('tasklist^|findstr /i netsafe_log ) do set /a n+=1rem if %n% EQU 2 (    echo   两个进程存在    call G:\BAT\AAA\checkprocess.bat)

网上还有用telnet.exe 存在状态来判断 端口是否是通的,但是这种方法不好,因为一旦加入系统服务,bat文件会杀死所有的telnet.exe 会导致 宿主机上的telnet.exe 无法应用,代码如下
mainfin.bat

@echo offgoto panduan:panduanstart /min  telnet.exe 127.0.0.1 5775 ping -n 5 127.1>nultasklist|find /i "telnet.exe" > nulif %ERRORLEVEL% EQU 0 ( GOTO ok ) else ( echo 4337 service errgoto err  ):errcall G:\BAT\start5775.batgoto panduan:okecho 这里杀死了 telnet.exe taskkill /F /IM telnet.exe > nulcall G:\BAT\addfin.bat

addfin.bat

@echo offgoto panduan:panduanstart /min  telnet.exe 127.0.0.1 4437 ping -n 5 127.1>nultasklist|find /i "telnet.exe" > nulif %ERRORLEVEL% EQU 0 ( GOTO ok ) else ( echo 4337 service errgoto err  ):errcall G:\BAT\start4437.batgoto panduan:oktaskkill /F /IM telnet.exe > nulcall G:\BAT\mainfin.bat

但是上面4个bat 文件都是有问题的,问题在资源一直没有释放 而且所占内存越来越多。 目前没有想到解决办法。 上面4个程序都不能解决时时检测端口的功能,虽然a.bat成功检测到了程序是否在进程中,但是程序在进程中不代表程序的端口的运行状态。 需要再次改进
2017年10月7日11:33:53
改进的办法是 用netstat 查看端口是在运行状态 如果是运行则继续循环 如果不在 则进行重启

@echo offtitle CheckRunninggoto panduan:panduanping -n 5 127.1>nulnetstat -ano | findstr ".*:5775\>" rem netstat -ano | findstr  0.0.0.0 | findstr 5775 | findstr LISTENING > nulif %ERRORLEVEL% EQU 0 ( GOTO ok ) else ( echo 5775 service errgoto err  ):errcall G:\BAT\start5775.batecho err goto panduan:okecho ok 5775 ~~!!!rem start/wait G:\BAT\final\CheckRunning.batping -n 5 127.1>nulnetstat -ano | findstr ".*:4437\>" rem 可以加上判断端口状态的关联rem netstat -ano | findstr  0.0.0.0 | findstr 4437 | findstr LISTENING > nul if %ERRORLEVEL% EQU 0 ( GOTO ok4437 ) else ( echo 4437 service err4437goto err4437  ):ok4437goto panduan:err4437call G:\BAT\final\CheckRunning.bat
@echo offtitle checkprocessgoto panduan:panduanping -n 5 127.1>nulnetstat -ano | findstr ".*:4437\>" rem netstat -ano | findstr  0.0.0.0 | findstr 5775 | findstr LISTENING > nulif %ERRORLEVEL% EQU 0 ( GOTO ok ) else ( echo 4437 service errgoto err  ):errcall G:\BAT\start4437.batecho err goto panduan:okecho ok ~~!!!call G:\BAT\final\checkprocess.batexit

最后隐藏 用vb

CreateObject("WScript.Shell").Run "cmd /c G:/BAT/final/checkprocess.bat",0 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 谷歌浏览器打不开指定的网址怎么办 电脑上我的电脑图标没了怎么办 手机上的短信图标没了怎么办 qq密保手机被别人换了怎么办 苹果六手机很卡网络不给力怎么办 堡垒之夜卡在载入界面怎么办 登录新福建一直说网络不给力怎么办 开发游戏平台给了钱不给东西怎么办 代号英雄与服务器断开连接了怎么办 千牛聊天页面买家信息不显示怎么办 秒拍存草稿箱的视频没了怎么办? 登录山东掌厅出现服务器错误怎么办 微信号被多人投诉被限制登录怎么办 联想平板电脑开机密码忘记了怎么办 申请的qq没登录忘了账号怎么办 炫舞时代由于网络原因登不上怎么办 qq申请太多进不了热聊怎么办 手机号申请的微信号被盗了怎么办 买菜别人少找了钱不还怎么办 在掌上英雄联盟买皮肤买错区怎么办 win8我的电脑图标没了怎么办 英雄联盟老是卡在安全扫描怎么办 英雄联盟活动送皮肤没送怎么办 电脑换完系统有些页面打不开怎么办 王卡助手交手机费页面打不开怎么办 在浏览器上打不开路由器页面怎么办 英雄联盟读条的时候自动关机怎么办 手机的位置信息开不了怎么办呢 滴滴车主接到乘客返回路程要怎么办 移动换话费积分是发什么短信怎么办 手机店积分换手机被贷款怎么办 心悦俱乐部礼包已过期是怎么办 心悦兑换的东西不是账号绑定怎么办 心悦会员绑定的手机号不用了怎么办 想在京东商城开个网店怎么办呢 京东买了东西收货了不想要了怎么办 京东转卖的商品有问题怎么办 如果衣服下架了然后有退货怎么办 想买二手车可没有懂车的人怎么办 买车的时候异地车牌回家怎么办 天猫下单显示下单人数太多券怎么办