【发布时间】:2015-02-03 12:52:11
【问题描述】:
我有一个在服务器上运行并停止服务的批处理脚本。 有时会出现服务无法停止使用 NET STOP 并且需要终止服务的问题。 为了解决这个问题,我添加了一个 IF 语句来终止服务,如果没有停止。
NET STOP "Service"
FOR /F "tokens=3 delims=: " %%H IN ('sc query "Service" ^| findstr " STATE"') DO (
IF /I "%%H" EQU "RUNNING" (
:: Kill the service if it is still running
Taskkill /F /FI "SERVICES eq Service"
)
)
我已尝试搜索此内容,但找不到明确的答案。
问题是;是仅在“NET STOP”完成后才运行终止进程,还是开始尝试停止服务并立即运行 IF 语句。
如果是后者,我需要在两者之间添加一个 timeout.exe 行,以便给 NET STOP 足够的时间来完成它的工作。
感谢您的帮助。
【问题讨论】:
-
我相信答案是肯定的 NET STOP 会等待。 SC 不会并且倾向于返回 Pending 状态。
标签: batch-file batch-processing