2015-01-23 2 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

Thanks @ shf301. Я попытался выполнить скрипт, но он не запускает сервис. Пожалуйста, повторите попытку и сообщите мне, что я могу потерять? Благодарю. – Karthik

Смежные вопросы