簡體   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