1 changed files with 111 additions and 0 deletions
@ -0,0 +1,111 @@ |
|||||
|
@echo off |
||||
|
setlocal EnableExtensions EnableDelayedExpansion |
||||
|
|
||||
|
rem ============================================================ |
||||
|
rem Mirror specific folders from A (AvatarBase) to B (this repo) |
||||
|
rem - Works relative to this .bat location |
||||
|
rem - Wipes extras in destination (/MIR) |
||||
|
rem - Logs removed extras (shown as *EXTRA File / *EXTRA Dir) |
||||
|
rem - Pauses before exit so console stays open |
||||
|
rem ============================================================ |
||||
|
|
||||
|
rem Destination root is the folder where this script lives |
||||
|
set "DST_ROOT=%~dp0" |
||||
|
if "%DST_ROOT:~-1%"=="\" set "DST_ROOT=%DST_ROOT:~0,-1%" |
||||
|
|
||||
|
rem Source root relative to this script |
||||
|
set "SRC_ROOT=%DST_ROOT%\..\..\AvatarBase\Unreal" |
||||
|
|
||||
|
rem Canonicalize paths |
||||
|
for %%I in ("%SRC_ROOT%") do set "SRC_ROOT=%%~fI" |
||||
|
for %%I in ("%DST_ROOT%") do set "DST_ROOT=%%~fI" |
||||
|
|
||||
|
echo ============================================================ |
||||
|
echo Robocopy Sync Script |
||||
|
echo ============================================================ |
||||
|
echo Source: %SRC_ROOT% |
||||
|
echo Destination: %DST_ROOT% |
||||
|
echo ============================================================ |
||||
|
echo. |
||||
|
|
||||
|
rem Guard: only intended for subprojects |
||||
|
if /I "%SRC_ROOT%"=="%DST_ROOT%" ( |
||||
|
echo ERROR: Source and destination are identical: |
||||
|
echo %SRC_ROOT% |
||||
|
echo This sync script is intended to be run from subprojects only. |
||||
|
echo. |
||||
|
pause |
||||
|
exit /b 1 |
||||
|
) |
||||
|
|
||||
|
if not exist "%SRC_ROOT%\" ( |
||||
|
echo ERROR: Source root does not exist: |
||||
|
echo %SRC_ROOT% |
||||
|
echo. |
||||
|
pause |
||||
|
exit /b 2 |
||||
|
) |
||||
|
|
||||
|
rem Timestamped log file |
||||
|
for /f %%I in ('powershell -NoProfile -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set "TS=%%I" |
||||
|
set "LOG_FILE=%DST_ROOT%\robocopy_sync_%TS%.log" |
||||
|
|
||||
|
rem List of folders to mirror |
||||
|
set "FOLDERS=Plugins\AvatarCore_AI Plugins\AvatarCore_Manager Plugins\AvatarCore_MetaHuman Plugins\AvatarCore_STT Plugins\AvatarCore_TTS Plugins\BLogger Plugins\BSettings Plugins\BTools Plugins\RuntimeMetaHumanLipSync_5.6 Content\Project" |
||||
|
|
||||
|
set "ANY_FAIL=0" |
||||
|
|
||||
|
for %%F in (%FOLDERS%) do ( |
||||
|
set "SRC=%SRC_ROOT%\%%F" |
||||
|
set "DST=%DST_ROOT%\%%F" |
||||
|
|
||||
|
echo ------------------------------------------------------------ |
||||
|
echo Mirroring: %%F |
||||
|
echo FROM: !SRC! |
||||
|
echo TO: !DST! |
||||
|
echo ------------------------------------------------------------ |
||||
|
|
||||
|
if not exist "!SRC!\" ( |
||||
|
echo WARNING: Source folder missing, skipping: !SRC! |
||||
|
echo WARNING: Source folder missing, skipping: !SRC!>>"%LOG_FILE%" |
||||
|
echo.>>"%LOG_FILE%" |
||||
|
pause |
||||
|
goto :continue |
||||
|
) |
||||
|
|
||||
|
if not exist "!DST!\" ( |
||||
|
mkdir "!DST!" 2>nul |
||||
|
) |
||||
|
|
||||
|
robocopy "!SRC!" "!DST!" /MIR /DCOPY:DAT /COPY:DAT /R:2 /W:1 /FFT /Z /NP /FP /TS /TEE /LOG+:"%LOG_FILE%" |
||||
|
set "RC=!ERRORLEVEL!" |
||||
|
|
||||
|
if !RC! GEQ 8 ( |
||||
|
echo ERROR: Robocopy reported failure for %%F (exit code !RC!) |
||||
|
set "ANY_FAIL=1" |
||||
|
) |
||||
|
|
||||
|
echo.>>"%LOG_FILE%" |
||||
|
|
||||
|
:continue |
||||
|
) |
||||
|
|
||||
|
echo ============================================================ |
||||
|
echo Sync finished. |
||||
|
echo Review log for removed files marked as: |
||||
|
echo *EXTRA File |
||||
|
echo *EXTRA Dir |
||||
|
echo. |
||||
|
echo Log file: |
||||
|
echo %LOG_FILE% |
||||
|
echo ============================================================ |
||||
|
|
||||
|
if "%ANY_FAIL%"=="1" ( |
||||
|
echo Log file: |
||||
|
echo %LOG_FILE% |
||||
|
echo. |
||||
|
pause |
||||
|
exit /b 8 |
||||
|
) |
||||
|
pause |
||||
|
exit /b 0 |
||||
Loading…
Reference in new issue