@echo off setlocal set "ROOT=\\DS-918\chatgpt\ChatGPT-Gouvernance-Projets\_registry" set "SCRIPTS_NAS=%ROOT%\scripts" set "CACHE=C:\Temp_Gouvernance\scripts_cache" set "PS=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" echo [SYNC] From "%SCRIPTS_NAS%" to "%CACHE%" if not exist "%SCRIPTS_NAS%" ( echo [ERR] NAS scripts dir not found: "%SCRIPTS_NAS%" exit /b 3 ) if not exist "%CACHE%" mkdir "%CACHE%" >nul 2>&1 robocopy "%SCRIPTS_NAS%" "%CACHE%" *.ps1 /E /R:1 /W:1 /NFL /NDL /NP /NJH /NJS >nul set "RC=%ERRORLEVEL%" if %RC% GEQ 8 ( echo [ERR] Robocopy failed with code %RC% exit /b 3 ) echo [SYNC] Robocopy OK (files present). rem Script par d?faut set "SCRIPT=gov_pipeline_guard_v1.1.ps1" if not "%~1"=="" ( set "SCRIPT=%~1" shift ) if not exist "%CACHE%\%SCRIPT%" ( echo [ERR] Script not found after sync: "%CACHE%\%SCRIPT%" echo [HINT] Ensure it exists on NAS: "%SCRIPTS_NAS%\%SCRIPT%" dir "%SCRIPTS_NAS%" exit /b 2 ) echo [SHA] Comparing NAS vs CACHE for "%SCRIPT%" "%PS%" -NoProfile -ExecutionPolicy Bypass -Command "$nas='%SCRIPTS_NAS%\%SCRIPT%'; $loc='%CACHE%\%SCRIPT%'; $s1=(Get-FileHash -LiteralPath $nas -Algorithm SHA256).Hash.ToLower(); $s2=(Get-FileHash -LiteralPath $loc -Algorithm SHA256).Hash.ToLower(); Write-Host ('[SHA] NAS : ' + $s1); Write-Host ('[SHA] CACHE: ' + $s2); Write-Host ('[SHA] MATCH: ' + ($s1 -eq $s2))" echo [RUN] %SCRIPT% (local cache) with -Preview "%PS%" -NoProfile -ExecutionPolicy Bypass -File "%CACHE%\%SCRIPT%" -Preview -Root "%ROOT%" %* endlocal exit /b 0