在继续批处理脚本之前,如何等待服务/进程启动?

我正在写一个Windows批处理脚本来卸载一些软件。 但是,在卸载程序完成之后,需要等待重新启动服务,然后再继续下一次卸载。

我可以让脚本等待卸载程序finsh使用: –

for /f "usebackq" %%M in ('tasklist /nh /fi "imagename eq %process_1%"') do if not %%M==%ignore_result% goto 1

但是我不能为了我的生活找出如何让脚本等待一个服务启动,然后继续脚本并运行更多的卸载。

我接受任何build议。

如何避免使用中间文件

 FOR /F "usebackq tokens=1,4" %%A IN (`sc query AcquisitionService`) DO ( IF %%A==STATE SET serviceStatus=%%B ) 

OK从评论我已经使用下面的脚本来解决这个问题。 我希望不要使用中间文件,但当需要必须….

@echo off
if exist service.txt del service.txt
set process=setup.exe
set ignore_result=INFO:
:1
for /f "usebackq" %%M in ('tasklist /nh /fi "imagename eq %process%"') do if not %%M==%ignore_result% goto 1
:2
sc query AcquisitionService>service.txt
find "RUNNING"<service.txt>nul
if errorlevel 1 goto 2
:3
echo.
echo Stuff finished.......

感谢您的想法。

海报提供的anwser工作,但它使用临时文件。 我找到了一种避免使用管道分离器的方法。

此代码将启动该服务,然后等待,直到它已经开始:

 sc start ServiceName :1 sc query ServiceName>NUL | find "RUNNING">NUL if errorlevel 1 goto 1 (...) 

rediection(> NUL)是可选的,至少在我的情况下它们没有什么不同。