我试图确保批处理文件知道服务“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
这难道不是你想要的吗?记住,我们尝试并捕获错误,而不是测试然后执行。想想为什么。