@echo off setlocal EnableExtensions EnableDelayedExpansion set "rootDir=%CD%" set "currentDir=%rootDir%\_CURRENT" if not exist "%currentDir%" ( mkdir "%currentDir%" >nul 2>&1 if not exist "%currentDir%" ( echo ERROR: Cannot create "%currentDir%" permission denied? echo Run the script with sufficient rights or choose a writable location. exit /b 1 ) ) set "logFile=%currentDir%\_UpdateSequences.log" echo [%date% %time%] === UpdateSequences run started in "%rootDir%" ===>> "%logFile%" set /a dailiesScanned=0 set /a sequencesTotal=0 set /a sequencesMirrored=0 set /a mirrorFailures=0 rem Scan for folders with YYYY-MM-DD format (e.g., 2023-12-15) for /d %%D in (????-??-??) do ( if exist "%%D" ( set /a dailiesScanned+=1 set "hadSub=0" rem Case 1: subfolders treated as sequences for /d %%S in ("%%D\*") do ( set /a sequencesTotal+=1 set "hadSub=1" call :MirrorOne "%%D\%%~nxS" "%%~nxS" ) rem Case 2: no subfolders => mirror daily itself as a sequence if "!hadSub!"=="0" ( set /a sequencesTotal+=1 call :MirrorOne "%%D" "%%~nxD" ) ) ) echo( Summary: dailies=%dailiesScanned% sequences=%sequencesTotal% ok=%sequencesMirrored% fail=%mirrorFailures% echo [%date% %time%] === UpdateSequences run completed (d=%dailiesScanned% seq=%sequencesTotal% ok=%sequencesMirrored% fail=%mirrorFailures%) ===>> "%logFile%" echo( Done. Press any key to exit. pause >nul exit /b 0 :MirrorOne setlocal EnableExtensions EnableDelayedExpansion set "srcRel=%~1" set "seqName=%~2" set "srcAbs=%rootDir%\%srcRel%" set "dstAbs=%currentDir%\%seqName%" rem Only proceed if source is a directory (trailing \ check) if not exist "%srcRel%\" ( echo Skip: missing folder "%srcRel%" endlocal & exit /b 0 ) echo Mirror: "%srcAbs%" -^> "%dstAbs%" echo [%date% %time%] Mirror: "%srcAbs%" -^> "%dstAbs%" >> "%logFile%" robocopy "%srcAbs%" "%dstAbs%" /MIR /MT:8 /R:1 /W:1 /COPY:DAT /DCOPY:DAT /FFT /NFL /NDL /NP /NJH /NJS >> "%logFile%" 2>&1 set "rc=!errorlevel!" if "!rc!"=="" set "rc=0" if !rc! LSS 8 ( set /a sequencesMirrored+=1 echo( OK (rc=!rc!) echo [%date% %time%] OK rc=!rc! >> "%logFile%" ) else ( set /a mirrorFailures+=1 echo( ERROR (rc=!rc!) - see log echo [%date% %time%] ERROR rc=!rc! >> "%logFile%" ) endlocal & exit /b 0