У меня есть пакетный файл, который часто перезапускает группу сервисов, разработанных собственными силами. Вскоре мы переходим от этого к чему-то более стабильному, но в настоящее время службы должны перезапускаться довольно часто, чтобы работать должным образом.
Чтобы упростить это, у меня есть пакетный файл, который выполняется по расписанию. Это выглядит так:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
ECHO ---------------------------------------------->> log.txt
ECHO -----------========================----------->> log.txt
ECHO -----------=========%date%=========----------->> log.txt
ECHO -----------========================----------->> log.txt
ECHO ---------------------------------------------->> log.txt
set DD=0
Set TIMESTAMP="eol=; tokens=1,2,3,4* delims=/, "
For /F %TIMESTAMP% %%i in ('DATE /t') DO (
SET YYYYMMDD=%%l%%j%%k
SET YYYYMM=%%l%%j
set DD=%%k
)
echo A >> ServiceNames
echo B >> ServiceNames
echo C >> ServiceNames
echo D >> ServiceNames
echo E >> ServiceNames
echo F >> ServiceNames
for /f %%a in (ServiceNames) do (
set timestamp=!date!!time!
ECHO !timestamp! - Stopping Service %%a >> log.txt
net stop /y srvService_%%a >> log.txt
taskkill /f /im Service_%%a.exe >> log.txt
ping localhost -n 15 > nul
set timestamp=!date!!time!
ECHO !timestamp! - Starting Service %%a >> log.txt
net start srvService_%%a >> log.txt
)
if exist ServiceNames del ServiceNames
Проблема заключается в том, что в некоторых случаях командный файл не будет ждать, пока один сервис полностью завершит запуск, прежде чем остановить следующий сервис.
Как вы думаете, может помочь добавление дополнительной команды ping localhost после команды net start?