我已经完成了一个批处理文件,它可以停止服务、删除文件、安装文件和启动服务。到目前为止,它没有任何问题。但今天它无法安装文件。
经过一番搜索,我发现服务正在停止而不是停止。我正在使用net stop "Service-Name"来停止服务。
如何检查服务何时停止或等待它们完全停止?
我已经完成了一个批处理文件,它可以停止服务、删除文件、安装文件和启动服务。到目前为止,它没有任何问题。但今天它无法安装文件。
经过一番搜索,我发现服务正在停止而不是停止。我正在使用net stop "Service-Name"来停止服务。
如何检查服务何时停止或等待它们完全停止?
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
或类似方法来完成。