Board logo

标题: [系统相关] [已解决]监控程序批处理无法监控到程序,请高人帮忙看看 谢谢 [打印本页]

作者: lion991128    时间: 2017-9-5 15:23     标题: [已解决]监控程序批处理无法监控到程序,请高人帮忙看看 谢谢

本帖最后由 lion991128 于 2017-9-6 09:50 编辑

设想很简单有2个文件夹 里面分别有2个相同名字的程序 开启时系统是不同的PID 所以kill的时候可以同时终止 开启时分别开启,主要是对这2个程序的监控,以下是我的代码 但是这个代码在运行时 会出现找不到已开始的进程会被不停的启用,还请高手看看问题出现在哪里  谢谢!!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :1
  4. tasklist |find "1.exe"  >nul 2>nul
  5. if errorlevel 1 (
  6.     echo 系统已挂掉
  7.     goto 2
  8. ) else (
  9.     echo 系统已开启
  10. )
  11. ping -n 20 127.1 >nul
  12. goto 1
  13. :2
  14. taskkill /f /im 1.exe
  15. start D:\AA\1.exe
  16. echo 01已启动
  17. ping -n 20 127.1 >nul
  18. start D:\AA2\1.exe
  19. echo 02已启动
  20. echo 系统于%date% %time%已经挂掉,已经重启完成>>D:\login.txt
  21. goto 1
复制代码

作者: lion991128    时间: 2017-9-5 17:18

问题是找到了, 不管有没有找到进程这个errorlevel的返回值一直是1 所以不停的运行程序, 但是如果判断进程的话是否还有别的办法吗???求教
作者: PS2.0    时间: 2017-9-5 21:06

回复 2# lion991128


我这里用Win7测试可以看到 errorlevel 不同的值

C:\Test>tasklist |find "1.exe"  >nul 2>nul

C:\Test>echo %errorlevel%
1

C:\Test>tasklist |find "cmd.exe"  >nul 2>nul

C:\Test>echo %errorlevel%
0
作者: lion991128    时间: 2017-9-6 09:47

哦谢谢 问题找到了  原来是tasklist显示进程名的时候 程序名字太长 .exe 只能显示到.ex所以进程无法找到.改到.ex就能正常返回值了, 我也是醉了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2