找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23248|回复: 3

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

[复制链接]
发表于 2017-9-5 15:23:19 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2017-9-5 17:18:57 | 显示全部楼层
问题是找到了, 不管有没有找到进程这个errorlevel的返回值一直是1 所以不停的运行程序, 但是如果判断进程的话是否还有别的办法吗???求教
发表于 2017-9-5 21:06:58 | 显示全部楼层
回复 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2017-9-6 09:47:49 | 显示全部楼层
哦谢谢 问题找到了  原来是tasklist显示进程名的时候 程序名字太长 .exe 只能显示到.ex所以进程无法找到.改到.ex就能正常返回值了, 我也是醉了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:32 , Processed in 0.011806 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表