Я пытаюсь настроить некоторые проверки / таймеры для ожидания, если служба займет больше времени для цикла. Если это не удастся, я буду использовать что-то еще, чтобы проанализировать файл журнала и напишите мне предупреждение, если это не удастся.
По какой-то причине я получаю синтаксическую ошибку в цикле for. Если я удаляю оператор else, он работает нормально. Но я не могу найти ничего плохого в синтаксисе в операторе else.
@echo off
set ServiceName="My Service Name"
set logPath="C:\Program Files\Application"
::Start Service Maintenance
set now=[%DATE:~10,14%-%DATE:~4,2%-%DATE:~7,2%T%TIME:~0,8%]
for /F "tokens=3 delims=: " %%H in ('sc query %ServiceName% ^| findstr " STATE"') do (
@echo %now% - For Loop >> %logPath%\ServiceManagmentLog.txt
if /I "%%H" NEQ "STOPPED" (
@echo %now% - Service Stopped - %ServiceName% >> %logPath%\ServiceManagmentLog.txt ) else (
@echo %now% - The service doens't seem to be stopping, waiting another 5 seconds and trying again >> %logPath%\ServiceManagmentLog.txt
ping -n 6 127.0.0.1 > nul
sc start %ServiceName%
ping -n 6 127.0.0.1 > nul
for /F "tokens=3 delims=: " %%I in ('sc query %ServiceName% ^| findstr " STATE"') do (
if /I "%%I" NEQ "STOPPED"(
@echo %now% - Service Stopped - %ServiceName% >> %logPath%\ServiceManagmentLog.txt ) else (
set stopError="%ServiceName% Failed to Stop"
@echo %now% - ALERT - There seems to be an issue stopping %ServiceName% )
)
)
)