因此,该文件应该检查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
答案 0 :(得分:0)
您想要的是使用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%
)