[英]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.