Board logo

标题: [其他] [已解决]批处理如何让程序退出后再次运行,保持一直运行? [打印本页]

作者: xslxslxsl    时间: 2011-7-19 15:38     标题: [已解决]批处理如何让程序退出后再次运行,保持一直运行?

本帖最后由 xslxslxsl 于 2011-8-17 12:03 编辑

因为我电脑上有一个软件程序,它在运行一段时间后就会自动退出,但是我想让它一直保持运行状态,不让它退出,所以能不能用批处理实现如下功能:让该程序一直在运行,若退出后,能自动再次启动。谢谢,望大家给予帮助,再次感谢!
作者: cjiabing    时间: 2011-7-19 15:42

进程,监控
搜索“进程”
作者: xslxslxsl    时间: 2011-7-19 16:10

2# cjiabing 望版主解释的详细些好吗?具体如何实现呢?谢谢!
作者: cjiabing    时间: 2011-7-19 16:17

3# xslxslxsl 假设你运行的程序是123.exe,用批处理进程监控,假如发现该程序没有运行,则重启该程序。
批处理如何监控进程呢?正式的说法是用tasklist,但发现以前有人这样子:


  1. @echo off
  2. :1
  3. "C:\123.exe"
  4. goto 1
复制代码

作者: CrLf    时间: 2011-7-19 16:59

一般可以这样:
  1. for /l %%a in () do a.exe
复制代码
不排除某些软件启动后马上换“马甲”导致无限弹窗的可能
作者: tmplinshi    时间: 2011-7-19 17:01

本帖最后由 tmplinshi 于 2011-7-21 17:52 编辑

需下载 http://www.nirsoft.net/utils/nircmd.zip
  1. @echo off
  2. set app="C:\WINDOWS\system32\notepad.exe"
  3. :: ------------- 隐藏批处理窗口 -------------
  4. set title=[keep app running]
  5. title %title%
  6. nircmdc win hide title "%title%"
  7. :: ------------- / 隐藏批处理窗口 -------------
  8. nircmdc waitprocess %app%
  9. for /l %%a in () do %app%
复制代码

作者: xslxslxsl    时间: 2011-7-20 13:28

4# cjiabing
谢谢解答,版主,"C:\123.exe",为什么加引号啊?
作者: cjiabing    时间: 2011-7-20 13:36

7# xslxslxsl
我改以前的东西,忘记删掉了。
不过当你替换为自己的程序,而程序的路径有空格时,需要加双引号的。
作者: xslxslxsl    时间: 2011-7-20 17:22

8# cjiabing
哦,好的,谢谢,再次谢谢大家!
作者: xslxslxsl    时间: 2011-7-20 17:41

6# tmplinshi 麻烦版主解释一下哦,为什么我执行后什么都没有,也不见程序运行,进程中有CMD,望指教,谢谢!
作者: xslxslxsl    时间: 2011-7-20 21:18

6# tmplinshi tmplinshi 版主,麻烦解释一下哦,谢谢!
作者: xslxslxsl    时间: 2011-7-20 21:57

6# tmplinshi
版主,刚才我试了一下,怎么不会运行记事本的程序啊,我是WIN7的系统下,麻烦解释一下,谢谢!
作者: tmplinshi    时间: 2011-7-21 10:00

抱歉,的确有这个问题。已修改代码。
作者: xslxslxsl    时间: 2011-7-21 13:29

13# tmplinshi 非常感谢,没有关系,我再试试看,嘻嘻!谢谢!
作者: bluewing009    时间: 2011-7-21 14:36     标题: 一个偏门方法

本帖最后由 bluewing009 于 2011-7-21 14:56 编辑

启动时用call命令,因为程序在运行,所以启动的批处理就停在call行上(call 与start区别),程序退出时在继续下一条。这样也就能“监控”到程序终止了…………
作者: xslxslxsl    时间: 2011-7-21 17:25

6# tmplinshi
版主,这样不行的啊,一直在执行打开记事本的程序啊,打开了,它还是继续打开,麻烦再看看,谢谢帮忙!
作者: tmplinshi    时间: 2011-7-21 17:54

6# tmplinshi
版主,这样不行的啊,一直在执行打开记事本的程序啊,打开了,它还是继续打开,麻烦再看看,谢谢帮忙!
xslxslxsl 发表于 2011-7-21 17:25

已修改代码。这下应该不会有问题了。
作者: xslxslxsl    时间: 2011-7-21 22:29

17# tmplinshi
版主,试过了,这下可以了,谢谢!
作者: xslxslxsl    时间: 2011-7-27 16:25

回复 6# tmplinshi
版主,如果在这个代码的基础上,我想统计并显示出,其运行notepad.exe 的次数话,该如何书写啊,谢谢!
作者: tmplinshi    时间: 2011-7-27 16:37

回复 19# xslxslxsl
  1. @echo off
  2. set app="C:\WINDOWS\system32\notepad.exe"
  3. :: ------------- 隐藏批处理窗口 -------------
  4. set title=[keep app running]
  5. title %title%
  6. nircmdc win hide title "%title%"
  7. :: ------------- / 隐藏批处理窗口 -------------
  8. nircmdc waitprocess %app%
  9. set n=
  10. :loop
  11. set /a n += 1
  12. cls
  13. echo %n%
  14. :: 或者输出到文件
  15. >运行次数.txt echo %n%
  16. %app%
  17. goto loop
复制代码

作者: xslxslxsl    时间: 2011-7-27 23:14

回复 20# tmplinshi
版主你太厉害了,唉,这差距何时可以缩短啊,学习......再学习,再次感谢你,谢谢你的帮助,以前你也帮助很多了,谢谢,理当要再认真学习!对了,再谢谢热心的版主!




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