Начну с конца: cmd не поддерживает работу с датами ни в каком виде.
Дату последнего изменения файла получить можно, но это будет дата в текстовом виде. Дальше нужно вручную выделять все составляющие даты и с помощью скудных возможностей set /a и кучи if вычислять была она позже 4 часов или нет. Сделать можно, но это будет ... "не технологично" :-)
В свое время я писал скрипт на bat переводящий дату в timestamp и обратно. Могу поискать, если заинтересует.
Я бы предложил вам использовать скрипт на powershell, vbs, js - все они умеют работать с датами. Реализовать на них вашу задачу довольно просто.
Проверка существования файлов и подпапок в заданной папке:
set "indir=c:\papka"
:: Проверка существования файлов:
for /f "tokens=* delims=" %%a in ('dir /b /a-d "%indir%\*" ') do (
echo.Есть файл: %%~fa
)
:: Проверка существования каталогов:
for /f "tokens=* delims=" %%a in ('dir /b /ad "%indir%\*" ') do (
echo.Есть каталог: %%~fa
)
Если служба "отваливается" путем завершения процесса службы, то проще проверять существует ли запущенный процесс с помощью tasklist и ее фильтров. Смотрите tasklist /?