@echo off REM A ecrire dans un fichier sauvegarde_all.bat REM On sauvegarde tous les dossiers des Users et AppData REM Adapter les variables ci-dessous si nécessaire set racine_sauvegarde=e:\sauvegarde set dossier_sauvegarde=%racine_sauvegarde%\%computername% if not exist "%TMP%\robocopy" mkdir "%TMP%\robocopy" set "log_out_script=%TMP%\robocopy\synthese.txt" set "log_err_robocopy=%TMP%\robocopy\robocopy_%dateTime%_err.txt" set "log_out_robocopy=%TMP%\robocopy\robocopy_%dateTime%_out.txt" set rbcpy_errorlevel=0 REM ** on cree le dossier de sauvegarde s'il n'existe pas IF NOT EXIST "%destination_sauvegarde%" mkdir "%destination_sauvegarde%" goto save_3 REM ** on commence la sauvegarde 1 set "source_sauvegarde=C:\Users" set "destination_sauvegarde=%dossier_sauvegarde%\Users" call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script REM ** on commence la sauvegarde 2 set "source_sauvegarde=C:\ProgramData" set "destination_sauvegarde=%dossier_sauvegarde%\ProgramData" call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script REM ** on commence la sauvegarde 3 :save_3 set "source_sauvegarde=C:\Users\adm_cedric\Documents" set "destination_sauvegarde=%dossier_sauvegarde%\users\adm_cedric\Documents" call :CALLROBOCOPY source_sauvegarde destination_sauvegarde log_out_script GOTO FIN :ERREUR echo ********** FIN ANORMALE DU TRAITEMENT ***** exit /B 1 :FIN REM ** on termine la sauvegarde par marquer un horodatage echo ********** FIN NORMALE DU TRAITEMENT ***** exit /B 0 rem CALLROBOCOPY SOURCE DESTINATION LOG rem rem SOURCE [IN, STR] Nom de la variable contenant le chemin de la source à copier rem DESTINATION [IN, STR] Nom de la variable contenant le chemin de la destination rem LOG [IN, STR] Chemin pour accéder au LOG du script rem :CALLROBOCOPY call :GETLOCALDATETIME dateCUR timeCUR set dateTime=%dateCUR%_%timeCUR% echo %dateTime% - DEBUT - sauvegarde "%source_sauvegarde%" dans "%destination_sauvegarde%" >>"%log_out_script%" if not exist "%TMP%\robocopy" mkdir "%TMP%\robocopy" set "log_err_robocopy=%TMP%\robocopy\robocopy_%dateTime%_err.txt" set "log_out_robocopy=%TMP%\robocopy\robocopy_%dateTime%_out.txt" echo Lancement de la copie de %source_sauvegarde% echo Lancement de la copie de %source_sauvegarde% >>"%log_out_robocopy%" Robocopy.exe "%source_sauvegarde%" "%destination_sauvegarde%" /E /MIR /Z /DCOPY:T /COPY:DT /TIMFIX /R:0 /W:0 /TEE /NP 1>>"%log_out_robocopy%" 2>>"%log_err_robocopy%" set rbcpy_errorlevel=%errorlevel% REM ** on termine la sauvegarde par marquer un horodatage call :GETLOCALDATETIME dateCUR timeCUR set dateTime=%dateCUR%_%timeCUR% echo %dateTime% - FIN - sauvegarde effectuee avec le code %rbcpy_errorlevel% 1>>"%log_out_script%" if %rbcpy_errorlevel% NEQ 0 ( echo ROBOCOPY s'est executé avec le code erreur %rbcpy_errorlevel%. Vérifier les logs dans %TMP%\robocopy goto ERREUR ) ELSE ( GOTO :EOF ) rem GETLOCALDATETIME RESULTDATE RESULTTIME rem Extraire la date et l'heure independemment des parametres regionaux rem Extraire la date au format YYYYMMDD et l'heure au format HHMMSS rem RESULTDATE [OUT, STR] Nom de la variable contenant le date au format YYYYMMDD rem RESULTDATE=0 si la date n'a pas pu etre extraite rem RESULTTIME [OUT, STR] Nom de la variable contenant l'heure au format HHMMSS rem RESULTTIME=0 si l'heure n'a pas pu etre extrait :GETLOCALDATETIME set RESULT= for /f "tokens=* skip=1 delims=" %%A in ('wmic os get LocalDateTime') do ( if not defined RESULT set RESULT=%%A ) if not defined RESULT set RESULT=0 if %RESULT%==0 ( if "%~1" NEQ "" (set %~1=%RESULT%) if "%~2" NEQ "" (set %~2=%RESULT%) ) else ( if "%~1" NEQ "" (set %~1=%RESULT:~0,8%) if "%~2" NEQ "" (set %~2=%RESULT:~8,6%) ) goto :EOF