在尝试启动服务之前检查服务是否完全停止

在尝试启动服务之前检查服务是否完全停止

我试图确保批处理文件知道服务“Tomcat7”已完全停止,然后再尝试再次启动“Tomcat7”服务。我知道“NET STOP”和“NET START”应该等到它们完全停止或启动后才能返回,但我见过一些情况,它们无论如何都会继续运行,有时可能是由于长时间的超时等待。

@ECHO OFF

net stop Tomcat7

rd /s /q "C:\storefront\live\work"
rd /s /q "C:\storefront\live\logs"

for /F "tokens=3 delims=: " %%H in ('sc query Tomcat7 ^| findstr "        STATE"') do (
  if /I "%%H" EQ "STOPPED" (
    net start Tomcat7
  )
)

答案1

用于sc query Tomcat7获取服务的状态。

答案2

sc start stisvc || Echo Service Not Fully Exited

这难道不是你想要的吗?记住,我们尝试并捕获错误,而不是测试然后执行。想想为什么。

相关内容