如何检查服务是否停止。

8 浏览
0 Comments

如何检查服务是否停止。

我已经制作了一个批处理文件,用于停止服务、删除文件、安装文件和启动服务。

直到现在都没有出现任何问题,但今天无法成功安装文件。

经过一番搜索,我发现服务正在停止中而不是已停止。

我使用net stop "服务名称"来停止服务。

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

0
0 Comments

如何检查服务是否停止

当我们想要检查一个服务是否停止时,我们可以使用以下方法:

方法一:使用wmic命令

wmic service where name="Service-Name" get state命令将显示服务的运行状态,我们可以循环执行该命令并使用ping命令暂停。

以下是一个使用wmic命令检查服务状态的示例代码:

: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 当脚本执行到这一行时,服务状态不是"Running"

方法二:使用sc命令

如果更喜欢使用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 当脚本执行到这一行时,服务状态不是"Running"

但是要注意,有时候服务的状态可能显示为"stopped",但实际上可能正在"stopping",或者显示为"running",但实际上可能正在"starting"。如果是这种情况,最好的方法是检查进程列表中是否存在该服务的进程。可以使用以下wmic命令来完成: wmic process where name="appname.exe" get name 或类似的命令。

通过以上两种方法,我们可以检查服务是否停止。其中,使用wmic命令可以直接获取服务的状态,而使用sc命令则需要通过查询结果来判断服务是否在运行。如果服务状态的准确性对我们很重要,可以考虑检查进程列表来获取更可靠的结果。

感谢评论中提供的代码:sc query Service-Name ^| find /i "state",非常有帮助。非常感谢!

0