繁体   English   中英

Windows服务批处理文件

[英]Windows batch file for services

因此,该文件应该检查​​2个服务的状态,并在发现它们未运行时启动它们。 它在第一个服务中效果很好,但是如何使它在多个服务中起作用? 另外,我希望能够在启动后执行状态检查。 请让我知道你的想法。

net start | find "spooler" > nul 2>&1
if not .%errorlevel%.==.0. goto spoolersvc
goto nextSvc

:nextSvc
net start | find "BITS" > nul 2>&1
if not .%errorlevel%.==.0. goto BITSsvc
goto quit

:spoolersvc
net start "spooler"
echo spooler Service restarted at %TIME::=-% on %DATE:/=-% >> C:\scripts\isa\logs\spooler.log
echo

:BITSsvc
net start "BITS" 
echo Microsoft BITS Service restarted at %TIME::=-% on %DATE:/=-% >> C:\scripts\isa\logs\BITS.log
echo

:quit
exit

您想要的是使用call的批处理文件子例程。 调用子例程后,您可以跳至文件末尾,批处理填充将在停下来的位置继续进行。 这样,您可以编写一个批处理文件,以允许您监视和启动任何数量的服务。

set LOG_FILE=C:\scripts\isa\logs\spooler.log

call :CheckService spooler
call :CheckService BITS
goto :EOF

:CheckService
set SERVICE_NAME=%1

net start | find "%SERVICE_NAME%" > nul 2>&1
if not .%errorlevel%.==.0. goto :EOF

net start "%SERVICE_NAME%"
echo %SERVICE_NAME% Service restarted at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%

net start | find "%SERVICE_NAME%" > nul 2>&1
if .%errorlevel%.==.0. (
    %SERVICE_NAME% Service started successfully at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%
) else (
    %SERVICE_NAME% Service failed to start at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM