[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]监控程序批处理无法监控到程序,请高人帮忙看看 谢谢

本帖最后由 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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

问题是找到了, 不管有没有找到进程这个errorlevel的返回值一直是1 所以不停的运行程序, 但是如果判断进程的话是否还有别的办法吗???求教

TOP

回复 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
1

评分人数

环境所限,需要使用 PowerShell 2.0 版本。

TOP

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

TOP

返回列表