2015-01-23 7 views
0

따라서이 파일은 2 개의 서비스 상태를 확인하고 실행되지 않는 것으로 확인되면 시작합니다. 첫 번째 서비스에서는 잘 작동하지만 둘 이상의 서비스에서는 어떻게 작동합니까? 또한 시작한 후 상태 확인을 수행 할 수 있기를 원합니다. 당신의 생각을 저에게 말 해주세요.서비스의 Windows 배치 파일

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

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% 
) 
+0

감사합니다. @ shf301. 스크립트 실행을 시도했지만 서비스가 시작되지 않았습니다. 다시 확인하고 제가 누락 된 부분을 알려주십시오. 감사. – Karthik