批处理检测xx.exe进程异常情况下不自动退出超时kill的问题

需要解决的问题是:批处理检测某一进程是否存在(2秒检测一次),如果进程超出预定时间(比如是2分钟)还存在则kill,也就是当xx.exe运行异
常时,不自动退出,超时的情况,比如2分钟不自动退出则强制杀掉再运行我下面的1.exe

我的代码只能达到“等待xx.exe进程运行自动结束后才运行我的程序1.exe”的目的,请高手指教:
@echo off
ping -n 2 -w 500 127.1>nul
set app=xx.exe
:re
ping -n 2 -w 500 127.1>nul
(tasklist|findstr "%app%">nul&&goto :re)||goto :sh
exit

:sh
start 1.exe
del %0
补充一下,可能上面说得不清楚;
正常情况下,我这批处理是即时检测xx.exe进程,当xx.exe进程自动退出时才运行我的1.exe
正常情况下,xx.exe正常退出时间不超出100秒,
我提问的主要目的是现在出现异常了,有的时候xx.exe因为异常一直卡在那里,不手动结束的话就会一直停在那里,这样的话,我后面的1.exe就一直在等待中,我的前提是1.exe必须运行与xx.exe后,当然也不是一开始就kill掉xx.exe,只有超时(2分钟为超时)时才用这种强制的方法kil掉。

:: 看了你的说明, 意思就是说检测xx.exe
:: 当第一次检测xx.exe, 如果存在, 就2分钟后在检测
:: 如果不存在xx.exe, 就打开1.exe
:: 如果是某种特殊的原因导致2分钟后xx.exe还是存在的话, 就结束xx.exe, 在打开1.exe
:: 代码如下:

@echo off & color 0d
:1
  set a=xx.exe
    set b=1.exe
  cls
  tasklist /nh|find /i "%a%"
    if ERRORLEVEL 1 (call :3) else (
      call :2
    )
:2
  cls & timeout -t 120 -nobreak>nul
  tasklist /ah|find /i "%a%"
    if ERRORLEVEL 1 (call :3) else (
      call :3
    )
:3
  taskkill /f /im "%a%"
    cls & start "" "%b%" & exit
    
:: 中国批处理脚本联盟

追问

大至是这样,但有点区别,解释一下:
:: 当第一次检测xx.exe, 如果存在, 就继续检测,检测时间可以是1秒或2秒,这样的话当xx.exe退出后就可以运行1.exe了,只有当时间超出了预期才考虑强制kill。

追答:: 给你的代码, 是这样的, 第一次检测, 如果存在, 就进入2分钟后再次检测
:: 且如果第一次检测就不存在, 则直接打开1.exe
:: 我觉得是可以用的

追问

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-04
你命令用少了吧?
tasklist是检测进程而已
taskkill才是结束进程,要加参数 /F /IM
taskkill /f /im xxx.exe

你这里这么用行不?
:sh
taskkill /f /im xxx.exe
start 1.exe
del %0

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网