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

时间:2010-06-09 10:20:09

标签: windows scripting windows-services batch-file wait

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

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

  

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

但我不能为我的生活弄清楚如何让脚本等待服务启动然后继续脚本并运行更多的卸载。

我愿意接受任何建议。

3 个答案:

答案 0 :(得分:2)

如何避免使用中间文件

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

答案 1 :(得分:0)

从评论中确定我已使用下面的脚本来解决问题。我希望不要使用中间文件,但是当需要时......

@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.......

感谢您的想法。

答案 2 :(得分:0)

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

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

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

重做(&n; NUL)是可选的,或者至少它们不会对我的情况产生影响。