Last active
July 27, 2017 19:41
-
-
Save Fred-Vatin/0e907150d14e68f26794207fbeec8fa0 to your computer and use it in GitHub Desktop.
My batch/cmd template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:: Pour conserver la mise en page, décorations et les accents | |
:: toujours charger et enregistrer les fichiers bat ou cmd en encodage | |
:: "OEM" alias "CP850" alias "DOS Latin 1" | |
:: et avec le retour de ligne DOS | |
@echo off | |
cls | |
:: mode con cols=100 lines=45 | |
title Restauration des Paramètres | |
:: S'assurer que le chemin sera relatif à l'emplacement du batch en admin | |
cd /d "%~dp0" | |
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION | |
:: ===================================================================== | |
:: --- VARIABLES VALIDES | |
:: ===================================================================== | |
:: set liste toutes les variables valides sur le PC | |
:: %__APPDIR__% le répertoire contenant l'exécutable de la commande (C:\Windows\SYSTEM32\) | |
:: %ALLUSERSPROFILE% C:\ProgramData | |
:: %APPDATA% C:\Users\{username}\AppData\Roaming | |
:: %CD% Dossier de travail courant (C:\Users\Fred) | |
:: %__CD__% Idem que %CD% mais avec un antislash final (C:\Users\Fred\) | |
:: %CmdCmdLine% Retourne la ligne de commande donnée au batch | |
:: %CMDEXTVERSION% Retourn un nombre (NT = "1", Win2000+ = "2") | |
:: %COMMONPROGRAMFILES% C:\Program Files\Common Files | |
:: %COMMONPROGRAMFILES(x86)% C:\Program Files (x86)\Common Files | |
:: %COMPUTERNAME% Retourne le nom attribué à l'ordinateur (PC-FRED) | |
:: %COMSPEC% C:\Windows\System32\cmd.exe | |
:: %DATE% retourne la date au format régional (18/07/2017) | |
:: %ERRORLEVEL% Contient le code d'erreur de la dernière commande utilisée ou celle renvoyé par "EXIT /B 65" où %ERRORLEVEL% sera égale à 65 | |
:: !ERRORLEVEL! Utiliser ça avec "setlocal ENABLEDELAYEDEXPANSION" pour être sûr d'avoir le code de retour de la dernière command en toute circonstance | |
:: %FIRMWARE_TYPE% Le type de boot du système, ex: Legacy ,UEFI, Not implemented, Unknown | |
:: %HOMEDRIVE% Contient la lettre de lecteur sur laquelle le répertoire de l'utilisateur courant est situé (C:) | |
:: %HOMEPATH% \Users\{username} (note: pas de lettre de disque) | |
:: %LOCALAPPDATA% C:\Users\{username}\AppData\Local | |
:: %LOGONSERVER% \\{domain_logon_server} (\\PC-FRED) | |
:: %NUMBER_OF_PROCESSORS% Retourne le nombre de processeurs (12) | |
:: %OS% Version Système d'exploitation (Windows_NT) | |
:: %PATH% Retourne le chemin d'accès vers les principaux exécutables du système | |
:: %PATHEXT% Retourne les extensions que le système considère comme exécutables. | |
:: %PROCESSOR_ARCHITECTURE% Retourne l'architecture utilisée par la commande (AMD64/IA64/x86) | |
:: %PROCESSOR_IDENTIFIER% ID du processeur (Intel64 Family 6 Model 62 Stepping 4, GenuineIntel) | |
:: %PROCESSOR_LEVEL% 6 | |
:: %PROCESSOR_REVISION% Version du proc (3e04) | |
:: %PROGRAMDATA% C:\ProgramData | |
:: %PROGRAMFILES% C:\Program Files | |
:: %PROGRAMFILES(X86)% C:\Program Files (x86) (only in 64Êbit version) | |
:: %PROMPT% Code for current command prompt format,usually $P$G (C:>) | |
:: %PSModulePath% Chemins contenant des modules PowerShell | |
:: %PUBLIC% C:\Users\Public | |
:: %RANDOM% Retourne un entier compris entre 0 et 32167 choisi aléatoirement par le système | |
:: %SystemDrive% C: | |
:: %SystemRoot% C:\Windows | |
:: %TEMP% et %TMP% C:\Users\{username}\AppData\Local\Temp | |
:: %TIME% Retourne l'heure actuelle au format régional (20:49:13,11) | |
:: %USERDOMAIN% Contient le domain auquel appartient le compte courant. Normalement équivalent à %COMPUTERNAME% (PC-FRED) | |
:: %USERNAME% Fred | |
:: %USERPROFILE% C:\Users\{username} | |
:: %WINDIR% C:\Windows | |
:: Utiliser "SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION" | |
:: permet d'appeler les variable avec ! au lieu de % | |
:: d'obtenir les valeurs attendues à l'intérieur des blocs (if, for, etc.) | |
:: Set __COMPAT_LAYER=RunAsInvoker | |
:: Permet de changer le niveau de privilège des commandes qui seront exécutées ensuite. | |
:: Valeurs valides: RunAsInvoker, RunAsHighest, RunAsAdmin | |
:: Chemin du batch en admin comprenant un trailing slash (voir "for /?" pour ce type de variable) | |
:: echo %~dp0 | |
:: 0 = the calling file, 1 = argument =1, 2 = argument =2, etc.. | |
:: ajouter clé de registre | |
:: if exist setting.reg ( | |
:: REG DELETE /f "HKCU\Software\NCH Software\VideoPad" | |
:: regedit /s setting.reg | |
:: ) | |
:: exporter la clé dans un fichier reg | |
:: REG EXPORT "HKCU\Software\machin" setting.reg | |
:: ===================================================================== | |
:: --- SET VARIABLES | |
:: ===================================================================== | |
set title=Restauration des paramètres | |
:: relative or absolute path with no trailing "\" | |
set backupFolder=backup | |
:: name of the file where to save a key or to restore from | |
set regFileName=settings.reg | |
:: key to backup | |
set regKey=HKCU\Software\AnyStuff | |
:: You shouldn't touch these variables | |
set system-color=color 07 | |
set error-color=color 4E | |
set end-color=color 2F | |
:: ===================================================================== | |
:: --- CHECK IF ADMIN | |
:: Use this section if the batch need to be run as admin | |
:: ===================================================================== | |
:: Affiche une erreur si le batch n'est pas lancé en mode admin | |
CALL :IsAdmin | |
:: ===================================================================== | |
:: --- CONFIRMATION | |
:: Use this section to show a confirm message before running process | |
:: ===================================================================== | |
:: param1 @string: "confirm message" | |
CALL :Confirm "ÊTES-VOUS SÛR DE VOULOIR POURSUIVRE LA RESTAURATION" | |
:: ===================================================================== | |
:: --- Fermer un programme qui bloquerait la suite du script | |
:: Use this section to kill a programm | |
:: ===================================================================== | |
:: param1 @string: "process.exe" | |
:: param2 @goto: success section | |
CALL :CloseProcess "any process.exe",Backup | |
:Backup | |
:: ======================================================================= | |
:: ================ RESTAURER UNE CLÉ DE REGISTRE ================ | |
:: Use this section if you want to restore a registry key | |
:: ======================================================================= | |
:RestoreReg | |
:: param1 @path: "relative or absolute path\backupFile.reg" | |
:: param2 @regkey: "path to regkey to delete before replace if param4 = 1" | |
:: param3 @goto: success section | |
:: param4 @number: 1 = replace all, 0 = just overwrite existing values | |
:: param5 @number: if fail -> 1 = stop script, 0 = continue script | |
CALL :RestoreRegKey "%backupFolder%\%regFileName%","%regKey%",folder,0,0 | |
:: ======================================================================= | |
:: ================ SAUVEGARDER UNE CLÉ DE REGISTRE ================ | |
:: Use this section if you want to backup a registry key | |
:: ======================================================================= | |
:BackupReg | |
:: param1 @regkey: "path to Reg Key to backup" | |
:: param2 @path: "relative of absolute path\backupFile.reg" | |
:: param3 @goto: success section | |
:: param4 @number: if fail -> 1 = stop script, 0 = continue script | |
CALL :BackupRegKey "%regKey%","%backupFolder%\%regFileName%",folder,1 | |
:folder | |
:: ===================================================================== | |
:: ================ COPIE DE DOSSIERS ================ | |
:: Use this section if you want to copy a folder | |
:: ===================================================================== | |
echo. | |
echo ╔════════════════════════════════════════════════════════════╗ | |
echo. | |
echo RESTAURATION DE (à compléter) | |
echo. | |
echo ------------------------------------------------------------ | |
echo. | |
:: param1 @path: "folder to copy" | |
:: param2 @path: "target folder where will be pasted param1 content" | |
:: param3 @string: "success message" | |
:: param4 @string: "fail message" | |
:: param5 @goto: section | |
:: param6 @number: 1 = delete original target and replace, 0 = just overwrite | |
CALL :CopyFolder "%backupFolder%\Folder to copy","%APPDATA%\Target folder","RÉUSSI: copie de machin","AUCUNE RESTAURATION DE TRUC EFFECTUÉE",files,0 | |
:files | |
:: ===================================================================== | |
:: ================ COPIE DE FICHIERS ================ | |
:: Use this section if you want to copy one or multiple files | |
:: ===================================================================== | |
echo. | |
echo ╔════════════════════════════════════════════════════════════╗ | |
echo. | |
echo SAUVEGARDE DE (à compléter) | |
echo. | |
echo ------------------------------------------------------------ | |
echo. | |
:: param1 @path: "file(s) to copy (accept pattern like *.text)" | |
:: param2 @path: "target folder where will be pasted param1 content" | |
:: param3 @string: "success message" | |
:: param4 @string: "fail message" | |
:: param5 @goto: section | |
:: param6 @number: 1 = delete original target and replace, 0 = just overwrite | |
CALL :CopyFiles "%APPDATA%\Some path\*.dot*","%backupFolder%\Target folder","RÉUSSI: Machin sauvegardé","AUCUNE SAUVEGARDE DU TRUC EFFECTUÉE",footer,1 | |
:footer | |
:: ===================================================================== | |
:: ===================== PIED DE PAGE ========================= | |
:: Use this section if you want to show a final message | |
:: ===================================================================== | |
echo. | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ RESTAURATION TERMINÉE: verifiez les erreurs ci-dessus ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo. | |
echo Appuyez sur une touche pour fermer cette fenêtre | |
pause>nul | |
:end | |
:: ===================================================================== | |
:: ======================= SIGNATURE ========================== | |
:: Use this section if you want to show a signature before quit | |
:: ===================================================================== | |
cls | |
call %end-color% | |
echo. | |
echo. | |
echo. | |
echo. | |
echo ╔══════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ ╔═════════════════════════════════╗ ║ | |
echo ║ ║ OPERATION TERMINÉE ║ ║ | |
echo ║ ╚═════════════════════════════════╝ ║ | |
echo ║ ╔═════════════════════════════════╗ ║ | |
echo ║ ║ ╔═════════════════════════════╗ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ║ ╔═══════╗ ║ ║ ║ | |
echo ║ ║ ║ ║ ╔═══╝ ║ ║ ║ | |
echo ║ ║ ║ ║ ╚═╗ ║ ║ ║ | |
echo ║ ║ ║ ║ ╔═╝ ║ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ║ ╚═══╝ reMea ║ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ║ ╔═══ ║ ║ ║ | |
echo ║ ║ ║ ║ VOUS REMERCIE ║ ║ ║ ║ | |
echo ║ ║ ║ ═══╝ ║ ║ ║ | |
echo ║ ║ ║ ║ ║ ║ | |
echo ║ ║ ╚═════════════════════════════╝ ║ ║ | |
echo ║ ╚═════════════════════════════════╝ ║ | |
echo ║ ║ | |
echo ╚══════════════════════════════════════════════════╝ | |
echo. | |
echo. | |
echo. | |
CALL :Sleep 2 | |
exit | |
:: --------------------------------------------------------------------- | |
:: -- FUNCTIONS SECTION START | |
:: --------------------------------------------------------------------- | |
:: function to verify admin/UAC privileges | |
:: CREDIT: http://stackoverflow.com/a/21295806/1995977 | |
:IsAdmin | |
IF NOT EXIST "%SYSTEMROOT%\system32\fsutil.exe" ( | |
call %error-color% | |
echo. | |
echo ═══════════════════════════════════════════════════════════ | |
echo. | |
echo ERREUR: PRIVILÈGES INVÉRIFIABLES | |
echo. | |
echo La commmand "fsutil" n'existe pas. | |
echo. | |
echo Vous devez être connecté sur un compte admin | |
echo et la version minimum requise de Windows est 7. | |
echo. | |
echo Ce script n'est pas prévu pour Windows XP ou vista, etc. | |
echo. | |
echo ═══════════════════════════════════════════════════════════ | |
echo. | |
echo Appuyez sur une touche pour fermer cette fenêtre. | |
pause>nul | |
EXIT | |
) ELSE ( | |
"%SYSTEMROOT%\system32\fsutil.exe" dirty query "%SystemDrive%" >NUL 2>&1 || ( | |
call %error-color% | |
echo. | |
echo ═══════════════════════════════════════════════════════════ | |
echo. | |
echo ERREUR: MODE ADMIN REQUIS | |
echo. | |
echo Vous devez lancer "%~n0.bat" | |
echo en tant qu'administrateur | |
echo. | |
echo ═══════════════════════════════════════════════════════════ | |
echo. | |
echo Appuyez sur une touche pour fermer cette fenêtre. | |
pause>nul | |
EXIT | |
) | |
) | |
EXIT /B | |
:: --------------------------------------------------------------------- | |
:: FUNCTION ASKING CONFIRMATION | |
:: Call :Confirm "param1" | |
:: param1 @string: "confirm message" | |
:: example: CALL :Confirm "Do you want to process ?" | |
:Confirm | |
cls | |
echo. | |
echo. | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo. | |
echo %~1 | |
echo. | |
echo ----------------------------------------------------------- | |
echo. | |
echo. | |
echo Appuyez sur une touche pour continuer ou fermer cette fenêtre | |
pause>nul | |
exit /b 0 | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO CHECK AND CLOSE A PROCESS | |
:: CALL :CloseProcess "param1",param2 | |
:: param1 @string: "process.exe" | |
:: param2 @goto: success section | |
:: example: CALL :CloseProcess "word.exe",Backup | |
:CloseProcess | |
:: vérifie l'existence du processus (essentiel sinon les commandes crasheront le batch) | |
tasklist | findstr /i "%~1" >NUL 2>&1 | |
:: processus inactif | |
IF !ErrorLevel!==1 ( | |
GOTO %~2 | |
exit /b 0 | |
) | |
:: processus actif | |
IF !ErrorLevel!==0 ( | |
echo ------------------------------------------------------------- | |
echo. | |
echo Fermeture de "%~1" | |
echo. | |
TASKKILL /F /IM "%~1" | |
echo. | |
CALL :Sleep 4 | |
GOTO %~2 | |
exit /b 0 | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO CHECK AND CREATE A TARGET FOLDER | |
:: CALL :TargetFolder "param1",param2,param3 | |
:: param1 @path: "relative of absolute path\target folder" | |
:: param2 @goto: success section | |
:: param2 @goto: fail section | |
:: example: CALL :TargetFolder "%backupFolder%",BackupReg,end | |
:TargetFolder | |
if not exist "%~1" ( | |
mkdir "%~1" | |
) | |
if exist "%~1" ( | |
goto %~2 | |
exit /b 0 | |
) else ( | |
call %error-color% | |
echo. | |
echo. | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ ERREUR : DOSSIER DE RESTAURATION MANQUANT ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo Le dossier "%~dp0%backupFolder%" n'a pu être créé. | |
echo. | |
echo La sauvegarde ne peut donc pas s'effectuer. | |
echo. | |
echo Résolvez le problème et recommencez. | |
echo. | |
echo ═══════════════════════════════════════════════════════════ | |
echo. | |
echo Appuyez sur une touche pour fermer cette fenêtre | |
pause>nul | |
call %system-color% | |
goto %~3 | |
exit /b 1 | |
) | |
exit /b 1 | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO BACKUP A REG KEY | |
:: CALL :BackupRegKey "param1","param2",param3,param4 | |
:: param1 @regkey: "path to Reg Key to backup" | |
:: param2 @path: "relative of absolute path\backupFile.reg" | |
:: param3 @goto: success section | |
:: param4 @number: if fail -> 1 = stop script, 0 = continue script | |
:: example: CALL :BackupRegKey "HKCU\Software\Microsoft\Office","%backupFolder%\%regFileName%",fichier,1 | |
:BackupRegKey | |
cls | |
echo. | |
echo ╔════════════════════════════════════════════════════════════╗ | |
echo. | |
echo Sauvegarde de la clé de registre : | |
echo. | |
echo %~1 | |
echo. | |
echo ------------------------------------------------------------ | |
echo. | |
:: exporter la clé dans un fichier reg | |
REG EXPORT "%~1" "%~2" /y >nul 2>&1 | |
IF !ErrorLevel!==1 ( | |
:: affichage de message si erreur durant la sauvegarde | |
call %error-color% | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ ERREUR DURANT LA RESTAURATION DE LA CLÉ DE REGISTRE ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo La clé de registre spécifiée n'existe pas, | |
echo est incorrecte ou le fichier "%~2" | |
echo est occupé/ouvert. | |
echo. | |
if %~4==1 (call :StopMsg) | |
if %~4==0 (call :ContinueMsg %~3) | |
call %system-color% | |
exit /b 1 | |
) | |
IF !ErrorLevel!==0 ( | |
echo RÉUSSI: Clé de registre sauvegardée | |
GOTO %~3 | |
exit /b 0 | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO RESTORE A REG KEY | |
:: CALL :RestoreRegKey "param1","param2",param3,param4,param5 | |
:: param1 @path: "relative or absolute path\backupFile.reg" | |
:: param2 @regkey: "path to regkey to delete before replace if param4 = 1" | |
:: param3 @goto: success section | |
:: param4 @number: 1 = replace all, 0 = just overwrite existing values | |
:: param5 @number: if fail -> 1 = stop script, 0 = continue script | |
:: example: CALL :RestoreRegKey "%backupFolder%\%regFileName%",fichier,0,1 | |
:RestoreRegKey | |
cls | |
echo. | |
echo ╔════════════════════════════════════════════════════════════╗ | |
echo. | |
echo Restauration de la clé de registre : | |
echo. | |
echo %~2 | |
echo. | |
echo ------------------------------------------------------------ | |
echo. | |
:: if the reg file to restore exists | |
if exist "%~1" ( | |
if %~4 == 1 ( | |
REG delete "%~2" /f > nul 2>&1 | |
) | |
REG import "%~1" > nul 2>&1 | |
:: Success | |
if !errorlevel! == 0 ( | |
echo RÉUSSI: Clé de registre restaurée | |
GOTO %~3 | |
exit /b 0 | |
) else ( | |
:: affichage de message si erreur durant la restauration | |
call %error-color% | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ ERREUR DURANT LA RESTAURATION DE LA CLÉ DE REGISTRE ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo La commande : REG import "%~1" /f | |
echo a retourné un erreur. | |
echo. | |
echo Assurez-vous que le fichier "%~1" existe. | |
echo. | |
if %~5==1 (call :StopMsg) | |
if %~5==0 (call :ContinueMsg %~3) | |
call %system-color% | |
exit /b 1 | |
) | |
) else ( | |
:: affichage de message si le fichier n'existe pas | |
call %error-color% | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ FICHIER DE REGISTRE INTROUVABLE ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo Le fichier de registre spécifiée : | |
echo. | |
echo "%~1" | |
echo. | |
echo n'existe pas. | |
echo. | |
if %~4==1 (call :StopMsg) | |
if %~4==0 (call :ContinueMsg %~3) | |
call %system-color% | |
exit /b 1 | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO DISPLAY INFO AND QUIT MESSAGE | |
:: CALL :StopMsg | |
:: example: CALL :StopMsg | |
:StopMsg | |
echo Le processus : %title% | |
echo n'ira pas plus loin. | |
echo. | |
echo Résolvez le problème et relancez le script: | |
echo "%~n0.bat" | |
echo. | |
echo ------------------------------------------------------------- | |
echo. | |
echo Appuyez sur une touche pour fermer cette fenêtre | |
pause>nul | |
goto :end | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO DISPLAY INFO AND Continue MESSAGE | |
:: CALL :ContinueMsg param1 | |
:: param1 @goto: section name | |
:: example: CALL :ContinueMsg next | |
:ContinueMsg | |
echo ------------------------------------------------------------- | |
echo. | |
echo Appuyez sur une touche pour poursuivre le processus: | |
echo. | |
echo %title% | |
echo. | |
echo Pour l'interrompre, fermez cette fenêtre avec la souris | |
echo ou en tapant: CTRL+C | |
echo. | |
pause>nul | |
call %system-color% | |
GOTO %~1 | |
exit /b 0 | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO BACKUP FILES | |
:: CALL :CopyFiles "param1","param2","param3","param4",param5 | |
:: param1 @path: "file(s) to copy (accept pattern like *.text)" | |
:: param2 @path: "target folder where will be pasted param1 content" | |
:: param3 @string: "success message" | |
:: param4 @string: "fail message" | |
:: param5 @goto: section | |
:: param6 @number: 1 = delete original target and replace, 0 = just overwrite | |
:: - example - | |
:: CALL :CopyFiles "%APPDATA%\Microsoft\Templates\*.dot*", | |
:: "%backupFolder%\Templates", | |
:: "SUCCESS: item is saved", | |
:: "Item not saved", | |
:: next | |
:: 0 | |
:CopyFiles | |
:: suppression de la destination si la source existe | |
if exist "%~1" ( | |
if %~6 == 1 ( | |
rd /S /Q "%~2" > nul 2>&1 | |
) | |
:: copie de fichier | |
echo F| xcopy "%~1" "%~2\" /I /V /K /Y > nul 2>&1 | |
:: vérifier l'état de la copie | |
IF NOT !ErrorLevel!==0 ( | |
call :CopyError !ErrorLevel!,"%~1","%~2",file,%~5 | |
exit /b | |
) else ( | |
echo %~3 | |
exit /b | |
) | |
exit /b | |
) else ( | |
echo. | |
echo █ Le.s fichier.s: "%~1" | |
echo █ n'existe.nt pas | |
echo █ | |
echo █ %~4 | |
echo. | |
exit /b | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO BACKUP FILES | |
:: CALL :CopyFolder "param1","param2","param3","param4",param5 | |
:: param1 @path: "folder to copy" | |
:: param2 @path: "target folder where will be pasted param1 content" | |
:: param3 @string: "success message" | |
:: param4 @string: "fail message" | |
:: param5 @goto: section | |
:: param6 @number: 1 = delete original target and replace, 0 = just overwrite | |
:: - example - | |
:: CALL :CopyFolder "%APPDATA%\Microsoft\Templates\Document Themes", | |
:: "%backupFolder%\Templates", | |
:: "SUCCESS: item is saved", | |
:: "Item not saved", | |
:: next | |
:: 0 | |
:CopyFolder | |
SETLOCAL | |
:: suppression de la destination si la source existe | |
if exist "%~1\" ( | |
if %~6 == 1 ( | |
rd /S /Q "%~2" > nul 2>&1 | |
) | |
:: copie de dossier | |
xcopy "%~1" "%~2"\ /S /I /V /K /Y > nul 2>&1 | |
:: vérifier l'état de la copie | |
IF NOT !ErrorLevel!==0 ( | |
call :CopyError !ErrorLevel!,"%~1","%~2",folder,%~5 | |
ENDLOCAL | |
exit /b | |
) else ( | |
echo %~3 | |
exit /b | |
) | |
exit /b | |
) else ( | |
echo. | |
echo █ Le dossier: "%~1" | |
echo █ n'existe pas | |
echo █ | |
echo █ %~4 | |
echo. | |
exit /b | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION TO DISPLAY COPY ERROR MESSAGE | |
:: CALL :CopyError param1,"param2","param3",param4,param5 | |
:: param1 @number: !ErrorLevel! | |
:: param2 @path: "source" | |
:: param3 @path: "target" | |
:: param4 @type: folder or file | |
:: param5 @goto: section | |
:: example: call :CopyError !ErrorLevel!,"%~1","%~2",file,%~5 | |
:: affichage de message si erreur durant la copie de fichiers/dossiers | |
:CopyError | |
call %error-color% | |
echo. | |
echo ╔═══════════════════════════════════════════════════════════╗ | |
echo ║ ║ | |
echo ║ ERREUR DURANT LA RESTAURATION DE FICHIERS ║ | |
echo ║ ║ | |
echo ╚═══════════════════════════════════════════════════════════╝ | |
echo. | |
echo. | |
echo █ La copie de type [%~4]: | |
echo █ | |
echo █ %~2 | |
echo █ | |
echo █ vers: | |
echo █ | |
echo █ %~3 | |
echo █ | |
echo █ a retourné l'erreur numéro %~1: | |
echo █ | |
if %~1==1 ( | |
echo █ "Aucun fichier n'a été trouvé pour la copie." | |
) | |
if %~1==2 ( | |
echo █ "L'utilisateur a pressé CTRL+C pour interrompre la copie." | |
) | |
if %~1==4 ( | |
echo █ "Le chemin ou la syntaxe de la commande sont invalides." | |
) | |
if %~1==5 ( | |
echo █ "Erreur durant l'écriture des données" | |
) | |
if %~5==end ( | |
CALL :StopMsg | |
exit /b | |
) else ( | |
CALL :ContinueMsg %~5 | |
exit /b | |
) | |
exit /b | |
:: --------------------------------------------------------------------- | |
:: FUNCTION GIVING SOME INVISIBLE TIMEOUT | |
:: Call :Sleep "param1" | |
:: param1 @number: secondes | |
:: example: CALL :Sleep 5 | |
:Sleep | |
timeout /T %~1 /NOBREAK >NUL 2>&1 | |
exit /B | |
:: --------------------------------------------------------------------- | |
:: -- FUNCTIONs SECTION END | |
:: --------------------------------------------------------------------- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment