我有一个服务,其启动类型设置为自动。但是,在意外重启期间,由于存在锁定文件,此服务无法启动。如何在此服务尝试启动之前自动删除此锁定文件?或者,如果服务在启动时失败,如何检测并删除锁定文件?我知道服务属性中的“恢复”选项卡。我只需要一个批处理文件来在后续失败时执行删除任务。如果有更有效的方法来做到这一点,我将不胜感激。
答案1
Stackoverflow 有一个关于如何检测服务是否正在运行以及在未运行的情况下执行某些操作的绝佳示例:
for /F "tokens=3 delims=: " %%H in ('sc query MyServiceName ^| findstr " STATE"') do (
if /I "%%H" NEQ "RUNNING" (
REM Put your code you want to execute here
REM For example, the following line
del E:\DSpace\handle-server\txns
sc start MyServiceName
)
)
您需要做的就是将其替换MyServiceName
为您的服务的简称,然后将该批处理文件放入您的启动文件夹中,或者在需要时直接运行它,我已经将其放入删除锁定文件的行中。