用批处理判断程序是否在运行的问题

来源:百度知道 编辑:UC知道 时间:2024/05/04 06:01:07
我需要一个批处理程序,它能实现判断某程序(比如a.exe)是否已经退出了,如果退出了,则调用另外一个程序b.exe,如果还在运行则隔10秒再检查一下.
本来这样写的
:1
echo a.exe在运行
tasklist |find /i "a.exe"
if %errorlevel%==0 (goto 1) else (goto 2)
:2
echo a.exe 已经结束
start b.exe
但是遇到一个问题,有的程序在已经退出了以后,进程却还是存在的,上面这个批处理就没有用了
请教一下,有什么办法能实现我的想法吗?谢谢

这段代码确实不错,至于你那个想法,我认为既然程序已经退出了,那么一定会有相应进程终结的,但是像在线升级这样功能的进程还在继续运行,你可能是没有利用好程序的主进程。这段代码没有任何问题。你可以试一下对比程序退出前后进程列表的变化,从而找出程序的主进程。
另外,在程序方面,这段程序在运行的时候cup使用率太高了,40%-60%
建议在程序段1中加入一句代码:ping -n 31 127.t >nul 2>nul
这句代码具有延时功能,这样cup占有率就降低了