0

我已经完成了一个批处理文件,它可以停止服务、删除文件、安装文件和启动服务。到目前为止,它没有任何问题。但今天它无法安装文件。

经过一番搜索,我发现服务正在停止而不是停止。我正在使用net stop "Service-Name"来停止服务。

如何检查服务何时停止或等待它们完全停止?

4

1 回答 1

1

wmic service where name="Service-Name" get state将向您显示服务是正在运行还是已停止。您可以循环回该命令并使用 ping 暂停。

:running
ping /n 2 0.0.0.0 >NUL
for /f "tokens=2 delims=^=" %%I in ('wmic service where name^="Service-Name" get state /format:list') do (
    if #%%I==#Running goto running
)
rem When the script reaches this line, the service status is not "Running."

或者,如果您更喜欢使用sc来确定服务的状态:

:running
ping /n 2 0.0.0.0 >NUL
for /f "tokens=4" %%I in ('sc query Service-Name ^| find /i "state"') do (
    if #%%I==#RUNNING goto running
)
rem When the script reaches this line, the service status is not "Running."

我不确定,但服务可能在实际“停止”时说“已停止”,或者在实际“启动”时说“正在运行”。如果是这种情况,那么您最好检查进程列表中是否存在进程。这也可以使用 wmic:wmic process where name="appname.exe" get name或类似方法来完成。

于 2013-03-04T17:51:46.797 回答