@echo off setlocal enabledelayedexpansion set "URL=http://localhost/ext/SynchronizeReportData.php" set "TARGET_HOUR=04" set "TARGET_MINUTE=00" set "TIMEOUT=10" set "TARGET_HOUR_PAD=0%TARGET_HOUR%" set "TARGET_HOUR_PAD=%TARGET_HOUR_PAD:~-2%" set "TARGET_MINUTE_PAD=0%TARGET_MINUTE%" set "TARGET_MINUTE_PAD=%TARGET_MINUTE_PAD:~-2%" set "TARGET_TIME=%TARGET_HOUR_PAD%:%TARGET_MINUTE_PAD%" set "LAST_RUN_DATE=" :loop for /f %%I in ('powershell -NoProfile -Command "Get-Date -Format yyyyMMddHHmmss"') do set "NOW=%%I" set "CUR_DATE=!NOW:~0,8!" set "CUR_HOUR=!NOW:~8,2!" set "CUR_MIN=!NOW:~10,2!" if "!CUR_HOUR!"=="%TARGET_HOUR_PAD%" if "!CUR_MIN!"=="%TARGET_MINUTE_PAD%" ( if not "!LAST_RUN_DATE!"=="!CUR_DATE!" ( for /f %%T in ('powershell -NoProfile -Command "Get-Date -Format \"yyyy-MM-dd HH:mm:ss\""') do set "STAMP=%%T" set "STATUS=" for /f %%S in ('curl -s -o nul -w "%%{http_code}" --max-time %TIMEOUT% "%URL%" 2^>^&1') do set "STATUS=%%S" if defined STATUS ( echo !STAMP! !TARGET_TIME! !STATUS! ) else ( echo !STAMP! !TARGET_TIME! ERROR ) set "LAST_RUN_DATE=!CUR_DATE!" timeout /t 65 >nul ) ) else ( timeout /t 5 >nul ) goto loop