@echo off setlocal EnableExtensions EnableDelayedExpansion REM === PARAMÈTRES A ADAPTER UNE FOIS === set "ROOT=C:\Users\miche\PycharmProjects\Ratio_Inventaires" set "DEV_XLSM=%ROOT%\Excel\dev\Ratio_dev.xlsm" set "DEV_AUTH_PY=%ROOT%\Excel\dev\Auth\auth_cli.py" set "VENV_PY=%ROOT%\.venv\Scripts\python.exe" set "PROD_DIR=%ROOT%\Excel\prod" set "PROD_XLSM=%PROD_DIR%\Ratio_prod.xlsm" set "PROD_AUTH_DIR=%PROD_DIR%\Auth" set "INSTALL_CLIENT=%USERPROFILE%\Desktop\Install_Ratio_Inv" REM <- dossier prêt à livrer au client set "CLIENT_AUTH_DIR=%INSTALL_CLIENT%\Auth" REM === DATE ISO robuste (indépendant des paramètres régionaux) === for /f %%i in ('powershell -NoProfile -Command "(Get-Date).ToString(\"yyyy_MM_dd\")"') do set "DATESTAMP=%%i" set "ARCHIVE_FILE=%PROD_DIR%\Ratio_prod_%DATESTAMP%.xlsm" echo. echo === [1/6] Préparation des dossiers ======================================== if not exist "%PROD_DIR%" mkdir "%PROD_DIR%" if not exist "%PROD_AUTH_DIR%" mkdir "%PROD_AUTH_DIR%" if not exist "%INSTALL_CLIENT%" mkdir "%INSTALL_CLIENT%" if not exist "%CLIENT_AUTH_DIR%" mkdir "%CLIENT_AUTH_DIR%" echo. echo === [2/6] (Optionnel) Build de auth_cli.exe avec PyInstaller ============== if exist "%VENV_PY%" ( echo Compilation via venv: %VENV_PY% "%VENV_PY%" -m PyInstaller --onefile --clean --distpath "%PROD_AUTH_DIR%" "%DEV_AUTH_PY%" if errorlevel 1 ( echo [WARN] Echec de compilation. On continue avec l'exe existant s'il est présent. ) ) else ( echo [WARN] VENV introuvable: %VENV_PY% -> build ignore ) echo. echo === [3/6] Sauvegarde de la prod courante ================================== if exist "%PROD_XLSM%" ( echo Sauvegarde -> "%ARCHIVE_FILE%" copy /Y "%PROD_XLSM%" "%ARCHIVE_FILE%" >nul ) else ( echo Pas de prod courante a sauvegarder. ) echo. echo === [4/6] Mise a jour de la prod depuis le dev ============================ if not exist "%DEV_XLSM%" ( echo [ERREUR] Fichier DEV introuvable: %DEV_XLSM% goto :EOF ) copy /Y "%DEV_XLSM%" "%PROD_XLSM%" >nul if errorlevel 1 ( echo [ERREUR] Copie du XLSM vers PROD echouee. goto :EOF ) REM On s'assure que l'exe est bien present et on deblocque Windows (SmartScreen) if exist "%PROD_AUTH_DIR%\auth_cli.exe" ( powershell -NoProfile -Command "Unblock-File -Path '%PROD_AUTH_DIR%\auth_cli.exe'" 2>nul ) else ( echo [ERREUR] auth_cli.exe absent dans %PROD_AUTH_DIR% echo Lance d'abord la compilation ou copie l'exe manuellement. goto :EOF ) REM Le .env doit exister dans PROD\Auth (modele ou reel) if not exist "%PROD_AUTH_DIR%\.env" ( echo [WARN] Aucun .env dans %PROD_AUTH_DIR% -> Pense a y mettre DB_HOST/DB_NAME/DB_USER/DB_PASSWORD ) echo. echo === [5/6] Préparation du dossier client =================================== copy /Y "%PROD_XLSM%" "%INSTALL_CLIENT%\Ratio_prod.xlsm" >nul if errorlevel 1 ( echo [ERREUR] Copie du XLSM vers INSTALL_CLIENT echouee. goto :EOF ) copy /Y "%PROD_AUTH_DIR%\auth_cli.exe" "%CLIENT_AUTH_DIR%\auth_cli.exe" >nul powershell -NoProfile -Command "Unblock-File -Path '%CLIENT_AUTH_DIR%\auth_cli.exe'" 2>nul if exist "%PROD_AUTH_DIR%\.env" ( copy /Y "%PROD_AUTH_DIR%\.env" "%CLIENT_AUTH_DIR%\.env" >nul ) else ( echo [INFO] Pas de .env a copier (client). Tu pourras le remplir a la main. ) echo. echo === [6/6] Nettoyage: on garde 5 archives les plus recentes =============== pushd "%PROD_DIR%" set count=0 for /f "delims=" %%f in ('dir /b /o-d "Ratio_prod_20??_??_??.xlsm"') do ( set /a count+=1 if !count! gtr 5 ( echo Suppression: %%f del "%%f" ) ) popd echo. echo [OK] Release terminee : echo - PROD : "%PROD_XLSM%" echo - AUTH : "%PROD_AUTH_DIR%\auth_cli.exe" + ".env" echo - CLIENT: "%INSTALL_CLIENT%\Ratio_prod.xlsm" + "Auth\*" echo. pause endlocal