O registro de data e hora da atualização do arquivo não ajudará você. Você precisa armazenar a hora da sua última verificação (ou seja, executar o lote). O lote a seguir armazena a última hora de verificação em um arquivo:
@echo off
setlocal enabledelayedexpansion
:: Check parameters.
if "%~1" == "" (
echo Usage: readlog.bat example.log
exit /B 1
)
:: Read time of last check from example.log.lastcheck file, or create one.
if exist "%~1.lastcheck" (
for /F "usebackq tokens=*" %%L in ("%~1.lastcheck") do set lastcheck=%%L
) else (
set lastcheck=0
)
:: Update example.log.lastcheck file with current time.
call :getunixtime %date:~-4% %date:~-8,2% %date:~-12,2% %time:~,2% %time:~3,2% %time:~6,2%
echo %unixtime% > "%~1.lastcheck"
:: Process log.
for /F "usebackq tokens=2-7 delims=/: " %%A in ('type test.log ^| findstr /c:"DATABASE IS OK"') do (
call :getunixtime %%A %%B %%C %%D %%E %%F
:: if an OK entry older than last check exist
if !unixtime! GTR %lastcheck% (
echo doing my stuff
goto :done
)
)
:done
exit /B 0
:: Poor man's implementation of Unix time.
:getunixtime
set "unixtime=(%1-1970)*365*24*3600 + %2*30*24*3600 + %3*24*3600 + %4*3600 + %5*60 + %6"
:: Remove leading zeros to prevent octal interpretation.
set "unixtime=%unixtime: 0= %"
set /a "unixtime=%unixtime%"
goto :eof