Advertisement
Guest User

Script de sauvegarde Windows

a guest
Sep 17th, 2013
1,204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Winbatch 16.93 KB | None | 0 0
  1. @ECHO off
  2. CLS
  3.  
  4. rem #####################################################################
  5. rem #                                                                   #
  6. rem #   Sript de sauvegarde et de restauration d'un poste               #
  7. rem #   dans le cadre d'un échange de PC avec transfert des données.  #
  8. rem #   Auteur d'origine : LimDul du forum Hardware.fr                  #
  9. rem #   Date de création : 17/09/2013                                  #
  10. rem #                                                                   #
  11. rem #####################################################################
  12.  
  13. rem But :   sauvegarder sur le support depuis est exécuté le script les données des utilisateurs
  14. rem         puis les rapatrier sur le nouveau pc en gardant l'ensemble des droits.
  15.  
  16. rem Liste des répertoires sauvegardés :
  17. rem     C:\Repertoire           (ou tout autre répertoire voulu, il suffit de changer/ajouter les lignes qu'il faut)
  18. rem     C:\Users\Username\repertoire            (répertoire d'utilisateur, pour prendre par exemple les documents, le bureau)
  19.  
  20. rem Suivis des versions :
  21. rem Merci d'indiquer la date année-mois-jour, la version, l'auteur et une description des modifications
  22. rem 2013-09-17, v1.0, LimDul, première version
  23.  
  24. rem #################################################################################################################################
  25.  
  26. rem ##################
  27. rem # Partie "debut" #
  28. rem ##################
  29.  
  30. rem Vérification des paramètres
  31. IF "%1"=="/?" GOTO aide
  32. IF "%1"=="/s" GOTO sauvegarde
  33. IF "%1"=="/S" GOTO sauvegarde
  34. IF "%1"=="/r" GOTO restauration
  35. IF "%1"=="/R" GOTO restauration
  36. IF "%1"=="/p" GOTO transfert
  37. IF "%1"=="/P" GOTO transfert
  38.  
  39.  
  40.  
  41. rem Choix du mode : sauvegarde ou restauration
  42. :choixmode
  43. CLS
  44. ECHO ###########################################################
  45. ECHO #      Script de transfert de donnees entre deux pc       #
  46. ECHO #                                                         #
  47. ECHO #   ATTENTION : uniquement valable pour Windows Vista !   #
  48. ECHO #   ATTENTION : Vous devez lancer le script depuis un     #
  49. ECHO #               compte avec les droits d'administration   #
  50. ECHO #               via la ligne de de commande avec des      #
  51. ECHO #               droits d'administration mais SURTOUT PAS  #
  52. ECHO #               via un clic-droit                         #
  53. ECHO #               "Executer en tant qu'administrateur"      #
  54. ECHO #               depuis un compte sans droit d'admin       #
  55. ECHO #                                                         #
  56. ECHO ###########################################################
  57. ECHO.
  58. ECHO.
  59. ECHO.
  60. ECHO Faites votre choix :
  61. ECHO (S) pour sauvegarder le PC
  62. ECHO (R) pour restaurer une sauvegarde
  63. ECHO (P) pour definir un lecteur source et destination particuliers
  64. ECHO (A) pour afficher l'aide
  65. ECHO (Enter ou Q pour quitter)
  66. ECHO.
  67. SET /p choix="Choix ? "
  68.  
  69. If /I "%choix%"=="s" GOTO sauvegarde
  70. If /I "%choix%"=="S" GOTO sauvegarde
  71. If /I "%choix%"=="r" GOTO restauration
  72. If /I "%choix%"=="R" GOTO restauration
  73. If /I "%choix%"=="p" GOTO transfert
  74. If /I "%choix%"=="P" GOTO transfert
  75. If /I "%choix%"=="a" GOTO aide
  76. If /I "%choix%"=="A" GOTO aide
  77. If /I "%choix%"=="q" GOTO :eof
  78. If /I "%choix%"=="Q" GOTO :eof
  79. If /I "%choix%"=="" GOTO :eof
  80.  
  81. SET choix=
  82.  
  83. ECHO Erreur : votre choix n'est pas valide
  84. PAUSE
  85. GOTO choixmode
  86.  
  87.  
  88.  
  89. rem Aide
  90. :aide
  91. ECHO ############################################################################
  92. ECHO #                              AVERTISSEMENT                               #
  93. ECHO ############################################################################
  94. ECHO             Il ne faut pas lancer ce script via un clic-droit
  95. ECHO                  "Executer en tant qu'administrateur"
  96. ECHO      Il faut le lancer depuis une ligne de commande avec les droits
  97. ECHO   d'administrateur ou depuis un compte avec les droits d'administration
  98. ECHO ############################################################################
  99. ECHO.
  100. ECHO Ce script permet de sauvegarder les donnees des utilisateurs
  101. ECHO pour ensuite les restaurer sur un autre ordinateur.
  102. ECHO De base le script est concu pour etre executé depuis un
  103. ECHO support externe (clef ou disque dur USB).
  104. ECHO Le script sauvegarde les dossiers/fichiers suivants :
  105. ECHO    (voir les commentaires en début de script)
  106. ECHO De base le script copie en gardant les droits vers le dossier :
  107. ECHO #:\Sauvegarde\nom_du_pc
  108. ECHO (avec # comme lettre du lecteur usb depuis lequel est execute le script)
  109. ECHO.
  110. ECHO Le script necessite des droits d'administrateur pour fonctionner correctement
  111. ECHO ainsi qu'un lecteur usb formate en NTFS pour la concervation des droits
  112. ECHO.
  113. ECHO Parametres :
  114. ECHO "/?"           Affiche l'aide (sans les "")
  115. ECHO /s             permet de lancer la sauvegarde
  116. ECHO /r             sans precision permet de lancer la restauration
  117. ECHO /r nom_du_pc   lance la restauration sur le nouveau PC du PC sauvegarde sous
  118. ECHO                le nom nom_du_pc depuis la sauvegarde #:\Sauvegarde\nom_du_pc
  119. ECHO                (avec # comme lettre du lecteur usb depuis lequel est
  120. ECHO                execute le script)
  121. ECHO /p             lance le transfert de fichier en mode particulier
  122. ECHO.
  123. GOTO :eof
  124.  
  125.  
  126.  
  127. rem #################################################################################################################################
  128. :sauvegarde
  129.  
  130. rem Sauvegarde d'un poste Vista
  131.  
  132. ECHO ######################
  133. ECHO #                    #
  134. ECHO #     Sauvegarde     #
  135. ECHO #                    #
  136. ECHO ######################
  137.  
  138. ECHO.
  139. ECHO Recuperation de la lettre du lecteur depuis ou est lance le script
  140. SET lettre=%cd:~0,1%
  141. ECHO.
  142. ECHO Le script est lance depuis le lecteur %lettre%
  143.  
  144.  
  145.  
  146. ECHO.
  147. ECHO Recuperation de la liste des repertoires des utilisateurs
  148. ECHO.
  149.  
  150. rem Récupération de la liste des répertoires
  151. DIR C:\users /AD/B > .\listreptemps.txt
  152.  
  153. rem Exclusion du répertoire default
  154. COPY listreptemps.txt FIC.TRA
  155. FIND /V /I "Default" .\FIC.TRA > listreptemps.txt
  156. DEL FIC.TRA
  157.  
  158. rem Exclusion du répertoire public
  159. COPY listreptemps.txt FIC.TRA
  160. FIND /V /I "Public" .\FIC.TRA > listreptemps.txt
  161. DEL FIC.TRA
  162.  
  163. rem Exclusion du répertoire system
  164. COPY listreptemps.txt FIC.TRA
  165. FIND /V /I "SYSTEM" .\FIC.TRA > listreptemps.txt
  166. DEL FIC.TRA
  167.  
  168. rem Exclusion du répertoire All Users
  169. COPY listreptemps.txt FIC.TRA
  170. FIND /V /I "All Users" .\FIC.TRA > listreptemps.txt
  171. DEL FIC.TRA
  172.  
  173. rem Suppression des lignes inutiles en début de fichier temporaire
  174. FOR /f "skip=8 delims=" %%i IN (listreptemps.txt) DO ECHO %%i>> FIC.TRA
  175. MD %lettre%:\Sauvegarde\%computername%\
  176. COPY FIC.TRA %lettre%:\Sauvegarde\%computername%\listreptemps.txt
  177. DEL FIC.TRA
  178.  
  179.  
  180.  
  181. ECHO.
  182. ECHO Liste des repertoires des utilisateurs recuperee
  183. ECHO.
  184. ECHO Debut de la sauvegarde des fichiers du repertoire C:\Repertoire
  185. ECHO.
  186.  
  187. rem L'usage de robocopy permet de sauvegarder les repertoire vides via /e et les droits via /copyall. /r:1 et /w:1 permetent de limiter le nombre de tentatives et le délais entre les tentatives
  188. robocopy C:\Repertoire %lettre%:\Sauvegarde\%computername%\Repertoire /e /copyall /r:1 /w:1
  189. rem Attention lors de tests avec le commutateur /create les droits ne sont pas copiés, il faut les sauvegarder manuellement, voir ci-dessous
  190.  
  191. rem Sauvegarde des droits du répertoire C:\Repertoire
  192. icacls C:\Repertoire\* /save %lettre%:\Sauvegarde\%computername%\Repertoire.droit /C
  193. rem Cette sauvegarde des droits ne devrait pas être utile car la copie via robocopy avec le commutateur /copyall devrait copier les droits.
  194. rem Or les droits ne sont pas tous copiés.
  195.  
  196.  
  197.  
  198. ECHO.
  199. ECHO Repertoire C:\Repertoire sauvegarde.
  200. ECHO.
  201. ECHO Debut de la sauvegarde des donnees des utilisateurs dans le repertoire C:\Users
  202. ECHO.
  203.  
  204. FOR /F %%j IN (%lettre%:\Sauvegarde\%computername%\listreptemps.txt) DO (
  205.     rem Copie des archives
  206.     robocopy "C:\Users\%%j\AppData\Local\Microsoft\Outlook" "%lettre%:\Sauvegarde\%computername%\%%j\Outlook" /e /copyall /IF "*.pst"
  207.     rem Copie des signatures Outlook
  208.     robocopy "C:\Users\%%j\AppData\Roaming\Microsoft\Signatures" "%lettre%:\Sauvegarde\%computername%\%%j\Signatures" /e /copyall
  209.     rem copie du répertoire "mes documents" si le profil est mal synchronisé
  210.     IF EXIST "C:\Users\%%j\Documents" (
  211.         robocopy "C:\Users\%%j\Documents" "%lettre%:\Sauvegarde\%computername%\%%j\Documents" /e /copyall
  212.         robocopy "C:\Users\%%j\Desktop" "%lettre%:\Sauvegarde\%computername%\%%j\Desktop" /e /copyall
  213.         robocopy "C:\Users\%%j\Favorites" "%lettre%:\Sauvegarde\%computername%\%%j\Favorites" /e /copyall
  214.     )
  215. )
  216. rem Sauvegarde des droits des utilisateurs
  217. icacls C:\Users\* /save %lettre%:\Sauvegarde\%computername%\user.droit /C
  218.  
  219. ECHO.
  220. ECHO Donnees des utilisateurs dans le repertoire C:\Users sauvegardees
  221. ECHO.
  222.  
  223. rem DEL listreptemps.txt
  224.  
  225.  
  226.  
  227. ECHO.
  228. ECHO #############################################
  229. ECHO #                                           #
  230. ECHO #   Le PC %computername% a ete sauvegarde   #
  231. ECHO #                                           #
  232. ECHO #############################################
  233. ECHO.
  234. PAUSE
  235. GOTO :eof
  236.  
  237.  
  238.  
  239. rem #################################################################################################################################
  240. :restauration
  241.  
  242. rem Restauration d'un poste Vista
  243.  
  244. CLS
  245. ECHO ########################
  246. ECHO #                      #
  247. ECHO #     Restauration     #
  248. ECHO #                      #
  249. ECHO ########################
  250.  
  251. ECHO.
  252. ECHO Recuperation de la lettre du lecteur depuis ou est lance le script
  253. SET lettre=%cd:~0,1%
  254. ECHO.
  255. ECHO Le script est lance depuis le lecteur %lettre%
  256. ECHO.
  257. ECHO.
  258. ECHO Quel est le nom de l'ancien poste a restaurer ?
  259. ECHO (Q ou echap pour quitter)
  260. ECHO.
  261. SET /p ancien=""
  262.  
  263.  
  264. If /I "%ancien%"=="q" GOTO :eof
  265. If /I "%ancien%"=="Q" GOTO :eof
  266. If /I "%ancien%"=="" GOTO :eof
  267.  
  268.  
  269.  
  270. rem test de l'existance de la sauvegarde
  271. IF EXIST %lettre%:\Sauvegarde\%ancien%\ GOTO restaurationsuite
  272. ECHO.
  273. ECHO.
  274. ECHO ERREUR
  275. ECHO Erreur : la sauvegarde n'existe pas
  276. ECHO.
  277. SET /p ancien=
  278. PAUSE
  279. GOTO restauration
  280.  
  281.  
  282. :restaurationsuite
  283. ECHO.
  284. ECHO Debut de la restauration des fichiers du repertoire C:\Repertoire
  285. ECHO.
  286. robocopy %lettre%:\Sauvegarde\%ancien%\Repertoire C:\Repertoire /e /copyall
  287.  
  288. rem Restauration des droits du répertoire C:\Repertoire
  289. icacls C:\Repertoire /restore %lettre%:\Sauvegarde\%ancien%\Repertoire.droit /C
  290. rem Cette sauvegarde/restauration des droits ne devrait pas être utile car la copie se fait déjà avec concervation des droits.
  291. rem Les tests ont été fait avec le commutateur /create de robocopy, à voir si sans le commutateur les droits sont vraiment copiés ou pas.
  292.  
  293.  
  294.  
  295. ECHO.
  296. ECHO Repertoire C:\Repertoire restaure.
  297. ECHO.
  298. ECHO Debut de la restauration des donnees des utilisateurs dans le repertoire C:\Users
  299. ECHO.
  300.  
  301. FOR /F %%j IN (%lettre%:\Sauvegarde\%ancien%\listreptemps.txt) DO (
  302.     robocopy "%lettre%:\Sauvegarde\%ancien%\%%j\Outlook" "C:\Users\%%j\AppData\Local\Microsoft\Outlook" /e /copyall
  303.     robocopy "%lettre%:\Sauvegarde\%ancien%\%%j\Signatures" "C:\Users\%%j\AppData\Roaming\Microsoft\Signatures" /e /copyall
  304.     IF EXIST "%lettre%:\Sauvegarde\%computername%\%%j\Documents" (
  305.         robocopy "%lettre%:\Sauvegarde\%computername%\%%j\Documents" "C:\Utilisateurs ancien poste %ancien%\%%j\Documents" /e /copyall
  306.         robocopy "%lettre%:\Sauvegarde\%computername%\%%j\Desktop" "C:\Utilisateurs ancien poste %ancien%\%%j\Desktop" /e /copyall
  307.         robocopy "%lettre%:\Sauvegarde\%computername%\%%j\Favorites" "C:\Utilisateurs ancien poste %ancien%\%%j\Favorites" /e /copyall
  308.     )
  309. )
  310. rem Restauration des droits des utilisateurs
  311. icacls "C:\Utilisateurs ancien poste %ancien%" /restore %lettre%:\Sauvegarde\%ancien%\user.droit /C
  312.  
  313.  
  314.  
  315. ECHO.
  316. ECHO Donnees des utilisateurs restaurees dans le repertoire C:\Utilisateurs ancien poste %ancien%
  317. ECHO.
  318.  
  319.  
  320.  
  321. ECHO.
  322. ECHO #####################################
  323. ECHO #                                   #
  324. ECHO #   Le PC %ancien% a ete restaure   #
  325. ECHO #   sur le poste %computername%     #
  326. ECHO #                                   #
  327. ECHO #####################################
  328. ECHO.
  329. PAUSE
  330. GOTO :eof
  331.  
  332.  
  333. rem #################################################################################################################################
  334. :transfert
  335.  
  336. rem Transfert direct entre deux disques de postes sous Vista
  337.  
  338. CLS
  339. ECHO ###########################
  340. ECHO #                         #
  341. ECHO #     Tranfert direct     #
  342. ECHO #                         #
  343. ECHO ###########################
  344. ECHO.
  345. ECHO.
  346. ECHO.
  347. ECHO Indiquez la lettre du lecteur source des donnees
  348. ECHO.
  349. SET /p source="Lecteur source ? "
  350. ECHO.
  351. ECHO.
  352. ECHO.
  353. ECHO Indiquez la lettre du lecteur cible des donnees
  354. ECHO.
  355. SET /p cible="Lecteur cible ? "
  356. ECHO.
  357. ECHO.
  358. ECHO Quel est le nom de l'ancien poste ?
  359. ECHO.
  360. SET /p ancien="ancien poste ? "
  361. ECHO.
  362. ECHO.
  363. ECHO.
  364. ECHO ------------------------------------------------
  365. ECHO.
  366. ECHO.
  367. ECHO.
  368. ECHO Le lecteur d'origine des donnees est le lecteur        %source%:
  369. ECHO Le lecteur de destination des donnees est le lecteur        %cible%:
  370. ECHO L'ancien poste a transferer est le        %ancien%
  371. ECHO.
  372. ECHO Est-ce correct ?
  373. ECHO (O/N, Q ou Enter pour quitter)
  374. SET /p test=
  375.  
  376. If /I "%test%"=="n" GOTO transfert
  377. If /I "%test%"=="N" GOTO transfert
  378. If /I "%test%"=="o" GOTO transfertsuite
  379. If /I "%test%"=="O" GOTO transfertsuite
  380. If /I "%test%"=="q" GOTO :eof
  381. If /I "%test%"=="Q" GOTO :eof
  382. If /I "%test%"=="" GOTO :eof
  383.  
  384. SET test=
  385.  
  386. ECHO Erreur : votre choix n'est pas valide
  387. PAUSE
  388. GOTO transfert
  389.  
  390.  
  391.  
  392. :transfertsuite
  393.  
  394. ECHO.
  395. ECHO Recuperation de la liste des repertoires des utilisateurs
  396. ECHO.
  397.  
  398. rem Récupération de la liste des répertoires
  399. DIR %source%:\users /AD/B > .\listreptemps.txt
  400.  
  401. rem Exclusion du répertoire default
  402. COPY listreptemps.txt FIC.TRA
  403. FIND /V /I "Default" .\FIC.TRA > listreptemps.txt
  404. DEL FIC.TRA
  405.  
  406. rem Exclusion du répertoire public
  407. COPY listreptemps.txt FIC.TRA
  408. FIND /V /I "Public" .\FIC.TRA > listreptemps.txt
  409. DEL FIC.TRA
  410.  
  411. rem Exclusion du répertoire system
  412. COPY listreptemps.txt FIC.TRA
  413. FIND /V /I "SYSTEM" .\FIC.TRA > listreptemps.txt
  414. DEL FIC.TRA
  415.  
  416. rem Exclusion du répertoire All Users
  417. COPY listreptemps.txt FIC.TRA
  418. FIND /V /I "All Users" .\FIC.TRA > listreptemps.txt
  419. DEL FIC.TRA
  420.  
  421. rem Suppression des lignes inutiles en début de fichier temporaire
  422. FOR /f "skip=8 delims=" %%i IN (listreptemps.txt) DO ECHO %%i>> FIC.TRA
  423. MD %lettre%:\Sauvegarde\%ancien%\
  424. COPY FIC.TRA %lettre%:\Sauvegarde\%ancien%\listreptemps.txt
  425. DEL FIC.TRA
  426.  
  427.  
  428. ECHO.
  429. ECHO Liste des repertoires des utilisateurs recuperee
  430. ECHO.
  431. ECHO Debut de la sauvegarde des fichiers du repertoire C:\Fichiers
  432. ECHO.
  433.  
  434. rem L'usage de robocopy permet de sauvegarder les repertoire vides via /e et les droits via /copyall. /r:1 et /w:1 permetent de limiter le nombre de tentatives et le délais entre les tentatives
  435. robocopy %source%:\Fichiers %cible%:\Fichiers /e /copyall /r:1 /w:1
  436. rem Attention lors de tests avec le commutateur /create les droits ne sont pas copiés, il faut les sauvegarder manuellement, voir ci-dessous
  437.  
  438. rem Sauvegarde des droits du répertoire C:\Fichiers
  439. icacls %source%:\Fichiers\* /save %lettre%:\Sauvegarde\%ancien%\Fichiers.droit /C
  440. icacls %source%:\Fichiers\Outlook\* /save %lettre%:\Sauvegarde\%ancien%\Outlook.droit /C
  441. rem Cette sauvegarde des droits ne devrait pas être utile car la copie via robocopy avec le commutateur /copyall devrait copier les droits.
  442. rem Or les droits ne sont pas tous copiés.
  443.  
  444. rem Restauration des droits du répertoire C:\Fichiers
  445. icacls %cible%:\Fichiers /restore %lettre%:\Sauvegarde\%ancien%\Fichiers.droit /C
  446. icacls %cible%:\Fichiers\Outlook /restore %lettre%:\Sauvegarde\%ancien%\Outlook.droit /C
  447. rem Cette sauvegarde/restauration des droits ne devrait pas être utile car la copie se fait déjà avec concervation des droits.
  448. rem Les tests ont été fait avec le commutateur /create de robocopy, à voir si sans le commutateur les droits sont vraiment copiés ou pas.
  449.  
  450.  
  451.  
  452. ECHO.
  453. ECHO Repertoire C:\Fichiers transfere.
  454. ECHO.
  455. ECHO Debut de la copie des donnees des utilisateurs dans le repertoire C:\Users
  456. ECHO.
  457.  
  458. FOR /F %%j IN (%lettre%:\Sauvegarde\%ancien%\listreptemps.txt) DO (
  459.     rem Copie des archives
  460.     robocopy "%source%:\Users\%%j\AppData\Local\Microsoft\Outlook" "%cible%:\Users\%%j\AppData\Local\Microsoft\Outlook" /e /copyall /IF "*.pst"
  461.     rem Copie des signatures Outlook
  462.     robocopy "%source%:\Users\%%j\AppData\Roaming\Microsoft\Signatures" "%cible%:\Users\%%j\AppData\Roaming\Microsoft\Signatures" /e /copyall
  463.     rem copie du répertoire "mes documents" si le profil est mal synchronisé
  464.     IF EXIST "%source%:\Users\%%j\Documents" (
  465.         robocopy "%source%:\Users\%%j\Documents" "%cible%:\Fichiers\Utilisateurs ancien poste %ancien%\%%j\Documents" /e /copyall
  466.         robocopy "%source%:\Users\%%j\Desktop" "%cible%:\Fichiers\Utilisateurs ancien poste %ancien%\%%j\Desktop" /e /copyall
  467.         robocopy "%source%:\Users\%%j\Favorites" "%cible%:\Fichiers\Utilisateurs ancien poste %ancien%\%%j\Favorites" /e /copyall
  468.     )
  469. )
  470.  
  471.  
  472.  
  473. rem Sauvegarde des droits des utilisateurs
  474. icacls %source%:\Users\* /save %lettre%:\Sauvegarde\%ancien%\user.droit /C
  475.  
  476. rem Restauration des droits des utilisateurs
  477. icacls %cible%:\Users /restore %lettre%:\Sauvegarde\%ancien%\user.droit /C
  478.  
  479. ECHO.
  480. ECHO Donnees des utilisateurs dans le repertoire %source%:\Users transferee
  481. ECHO.
  482.  
  483. rem DEL listreptemps.txt
  484.  
  485.  
  486.  
  487. ECHO.
  488. ECHO ####################################################################
  489. ECHO #                                                                  #
  490. ECHO #     Le PC %ancien% a ete transfere vers le PC %computername%     #
  491. ECHO #                                                                  #
  492. ECHO ####################################################################
  493. ECHO.
  494. PAUSE
  495. GOTO :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement