You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.1 KiB
111 lines
3.1 KiB
@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
|
|
|