Adott egy program, aminek folyamatosan futnia kell, percenként írja az egyik mappa tartalmát. Ha nem működik megfelelően, akkor rövid időn -1-3 perc- belül újra kell indítani. A "nem működést" legegyszerűbb módon úgy tudom észlelni, hogy a mappa módosítási dátuma legalább 2 perccel korábbi .Ennek észlelését és a program újraindítást egy batch scripttel szeretném megoldani.
Az újraindítás rendben működik, azonban valamiért néhány óránként, egész óra nulla perckor is szeretné újraindítani a programot. Elvileg az if elágazás miatt ez nem történhetne meg, mivel a %actmin% változó értéke nulla. Mi lehet a hiba a scriptben? Előre is köszönöm a válaszokat!
A kód így néz ki:
set mypath=c:\MyFolder\
set actfolder=%mypath%%1
:loop
set acttime=%time%
set acthour=%acttime:~0,2%
IF "%acthour:~0,1%"=="0" SET /a acthour=%acthour:~1,1%
set actmin=%acttime:~3,2%
IF "%actmin:~0,1%"=="0" SET /a actmin=%actmin:~1,1%
FOR %%f IN (%actfolder%) DO SET filedatetime=%%~tf
set /a filehour=%filedatetime:~12,2%
IF "%filehour:~0,1%" == "0" SET filehour=%filehour:~1,1%
set filemin=%filedatetime:~15,2%
IF "%filemin:~0,1%"=="0" SET filemin=%filemin:~1,1%
if actmin GTR 2 goto after2mins
goto ok
:after2mins
if %acthour% NEQ %filehour% goto restart0
set /a firstmin=%actmin%-2
if %filemin% LSS %firstmin% goto restart1
goto ok
:restart0
color C
echo Restart0 @ %date% %time%
echo Restart0 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Acttime: %acttime%, Filedatetime: %filedatetime% >> MyLog.log
goto sleep
:restart1
color C
echo Restart1 @ %date% %time%
echo Restart1 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Firstmin: %firstmin% >> MyLog.log
goto sleep
: ok
cls
color A
echo Acttime: %acthour%:%actmin%
echo Folder modified time: %filehour%:%filemin%
echo OK
if exist %mypath%MyLog.log (
echo LOG EXISTS!!!
color e
)
goto sleep
:restart
REM Ez mukodik
goto loop
:sleep
sleep 60
goto loop