Guest User

backup.bat

a guest
Nov 21st, 2015
567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 7.68 KB | None | 0 0
  1. @echo off && cls
  2. mode con: cols=85 lines=40
  3. ::
  4. :: variables
  5. ::
  6. set drive=!folder!
  7. :: Script info
  8. set script_name=BackupScript
  9. set script_version=0.0.2
  10. :: Time
  11. FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO set DTS=%%a
  12. set CUR_DATE=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%
  13. :: Log info
  14. set logdir=BackupLogs
  15. set logpath=%SystemDrive%\%logdir%
  16. set logfile=backup_%computername%_%CUR_DATE%.log
  17. if not exist %logpath% mkdir %logpath%
  18. if not exist %logpath%\%logfile% echo. > %logpath%\%logfile%
  19. :: Robo info
  20. set backupCmd=ROBOCOPY
  21. set robocopyArgs=/COPY:D /S /MIR /XJ /XA:S /W:1 /R:1 /LOG+:%logpath%\robo.log /TEE /XX
  22. set robocopyArgs2=/COPY:D /XJ /XA:S /W:1 /R:1 /LOG+:%logpath%\robo.log /TEE /XX
  23. :: Outlook path
  24. set outlookpath=%USERPROFILE%\AppData\Local\Microsoft\Outlook
  25. :: Cmd args
  26. set skip_app=no
  27. set skip_con=no
  28. set skip_des=no
  29. set skip_doc=no
  30. set skip_dow=no
  31. set skip_fav=no
  32. set skip_lin=no
  33. set skip_mus=no
  34. set skip_pic=no
  35. set skip_gam=no
  36. set skip_vid=no
  37. set skip_out=no
  38. ::
  39. :: Parse command-line arguments
  40. ::
  41. for %%i in (%*) do (
  42.     if /i %%i==-ap set skip_app=yes  
  43.     if /i %%i==-co set skip_con=yes
  44.     if /i %%i==-de set skip_des=yes
  45.     if /i %%i==-dc set skip_doc=yes
  46.     if /i %%i==-dw set skip_dow=yes
  47.     if /i %%i==-fa set skip_fav=yes
  48.     if /i %%i==-li set skip_lin=yes
  49.     if /i %%i==-mu set skip_mus=yes
  50.     if /i %%i==-pi set skip_pic=yes
  51.     if /i %%i==-ga set skip_gam=yes
  52.     if /i %%i==-vi set skip_vid=yes
  53.         if /i %%i==-ol set skip_out=yes
  54.     )
  55. ::
  56. :: Config screen
  57. ::    
  58. color 1f
  59. title %script_name% v%script_version%
  60. cls
  61. echo  --       %script_name% v%script_version%      --
  62. echo  ------------------------------------
  63. echo  ** Script config displayed below. **
  64. echo  **    Review before proceeding.   **
  65. echo  ------------------------------------
  66. echo         Folders:     Skip?
  67. echo  ====================================
  68. echo          AppData     %skip_app%
  69. echo         Contacts     %skip_con%        
  70. echo          Desktop     %skip_des%        
  71. echo        Documents     %skip_doc%
  72. echo        Downloads     %skip_dow%
  73. echo        Favorites     %skip_fav%      
  74. echo            Links     %skip_lin%          
  75. echo            Music     %skip_mus%                  
  76. echo         Pictures     %skip_pic%    
  77. echo      Saved Games     %skip_gam%
  78. echo           Videos     %skip_vid%
  79. echo          Outlook     %skip_out%
  80. echo  ====================================
  81. echo                Options
  82. echo  ------------------------------------
  83. echo     1  to start backup
  84. echo     2  reset flags and start again
  85. echo  ------------------------------------
  86. set /p answer=Option [1/2]?
  87. if /i {%answer%}=={1} (goto :backup)
  88. if /i {%answer%}=={2} (RUN_ME.bat)
  89. pause
  90. ::
  91. :: Backup begin
  92. ::
  93. @echo off && cls
  94. :backup
  95. call :log2 ################################################################################
  96. call :log2 #                       Backup beginning, please wait...                       #
  97. call :log2 ################################################################################
  98. call :StartTimer
  99. :appdata
  100. if /i %skip_app%==yes (
  101.         call :log ### Skipping AppData
  102.         goto contacts
  103. )
  104. call :log # Backing up AppData directory...
  105. %backupCmd% "%USERPROFILE%\AppData" "%drive%\%CUR_DATE%\AppData" %robocopyArgs%
  106. call :log # AppData directory backup complete!
  107.  
  108. :contacts
  109. if /i %skip_con%==yes (
  110.         call :log ### Skipping Contacts
  111.         goto desktop
  112. )
  113. call :log # Backing up Contacts directory...  
  114. %backupCmd% "%USERPROFILE%\Contacts" "%drive%\%CUR_DATE%\Contacts" %robocopyArgs%
  115. call :log # Contacts directory backup complete!
  116.  
  117. :desktop
  118. if /i %skip_des%==yes (
  119.         call :log ### Skipping Desktop
  120.         goto documents
  121. )
  122. call :log # Backing up Desktop directory...  
  123. %backupCmd% "%USERPROFILE%\Desktop" "%drive%\%CUR_DATE%\Desktop" %robocopyArgs%
  124. call :log # Desktop directory backup complete!
  125.  
  126. :documents
  127. if /i %skip_doc%==yes (
  128.         call :log ### Skipping Documents
  129.         goto downloads
  130. )
  131. call :log # Backing up Documents directory...  
  132. %backupCmd% "%USERPROFILE%\Documents" "%drive%\%CUR_DATE%\Documents" %robocopyArgs%
  133. call :log # Documents directory backup complete!
  134.  
  135. :downloads
  136. if /i %skip_dow%==yes (
  137.         call :log ### Skipping Downloads
  138.         goto favorites
  139. )
  140. call :log # Backing up Downloads directory...  
  141. %backupCmd% "%USERPROFILE%\Downloads" "%drive%\%CUR_DATE%\Downloads" %robocopyArgs%
  142. call :log # Downloads directory backup complete!
  143.  
  144. :favorites
  145. if /i %skip_fav%==yes (
  146.         call :log ### Skipping Favorites
  147.         goto links
  148. )
  149. call :log # Backing up Favorites directory...  
  150. %backupCmd% "%USERPROFILE%\Favorites" "%drive%\%CUR_DATE%\Favorites" %robocopyArgs%
  151. call :log # Favorites directory backup complete!
  152.  
  153. :links
  154. if /i %skip_lin%==yes (
  155.         call :log ### Skipping Links
  156.         goto music
  157. )
  158. call :log # Backing up Links directory...  
  159. %backupCmd% "%USERPROFILE%\Links" "%drive%\%CUR_DATE%\Links" %robocopyArgs%
  160. call :log # Links directory backup complete!
  161.  
  162. :music
  163. if /i %skip_mus%==yes (
  164.         call :log ### Skipping Music
  165.         goto pictures
  166. )
  167. call :log # Backing up Music directory...  
  168. %backupCmd% "%USERPROFILE%\Music" "%drive%\%CUR_DATE%\Music" %robocopyArgs%
  169. call :log # Music directory backup complete!
  170.  
  171. :pictures
  172. if /i %skip_pic%==yes (
  173.         call :log ### Skipping Pictures
  174.         goto games
  175. )
  176. call :log # Backing up Pictures directory...  
  177. %backupCmd% "%USERPROFILE%\Pictures" "%drive%\%CUR_DATE%\Pictures" %robocopyArgs%
  178. call :log # Pictures directory backup complete!
  179.  
  180. :games
  181. if /i %skip_gam%==yes (
  182.         call :log ### Skipping Saved Games
  183.         goto videos
  184. )
  185. call :log # Backing up Saved Games directory...  
  186. %backupCmd% "%USERPROFILE%\Saved Games" "%drive%\%CUR_DATE%\Saved Games" %robocopyArgs%
  187. call :log # Saved Games directory backup complete!
  188.  
  189. :videos
  190. if /i %skip_vid%==yes (
  191.         call :log ### Skipping Videos
  192.         goto outlook
  193. )
  194. call :log # Backing up Videos directory...  
  195. %backupCmd% "%USERPROFILE%\Videos" "%drive%\%CUR_DATE%\Videos" %robocopyArgs%
  196. call :log # Videos directory backup complete!  
  197.  
  198.  
  199. :outlook
  200. if /i %skip_out%==yes (
  201.         call :log ### Skipping outlook.pst
  202.         goto post
  203. )
  204. call :log # Backing up outlook.pst...  
  205. %backupCmd% "%outlookpath%" "%drive%\%CUR_DATE%\Outlook" "Outlook.pst" %robocopyArgs2%
  206. call :log # Videos directory backup complete!  
  207. ::
  208. :: Back end
  209. ::
  210. :post
  211. call :StopTimer
  212. cls
  213. call :log2 ################################################################################
  214. call :log2 #                              Backup complete!                                #
  215. call :log2 ################################################################################
  216. echo.
  217. call :log Elapsed time: %TookTime:~0,-2%.%TookTimePadded:~-2% seconds
  218. echo.
  219. call :log Backup location: !folder!
  220. call :log Backup log location: %logpath%
  221. echo.
  222. @pause
  223.  
  224. ::
  225. :: Call functions
  226. ::
  227. :: Log
  228. :log
  229. echo [%CUR_DATE%] - %TIME%    %*>> "%logpath%\%logfile%"  
  230. echo [%CUR_DATE%] - %TIME%    %*
  231. goto :eof
  232. :log2
  233. echo %*>> "%logpath%\%logfile%"  
  234. echo %*
  235. goto :eof
  236. :: Timer
  237. :StartTimer
  238. :: Store start time
  239. set StartTIME=%TIME%
  240. for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StartTIME: =0%`) do set /a Start100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100
  241. goto :eof
  242. :StopTimer
  243. :: Get the end time
  244. set StopTIME=%TIME%
  245. for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StopTIME: =0%`) do set /a Stop100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100
  246. :: Test midnight rollover. If so, add 1 day=8640000 1/100ths secs
  247. if %Stop100S% LSS %Start100S% set /a Stop100S+=8640000
  248. set /a TookTime=%Stop100S%-%Start100S%
  249. set TookTimePadded=0%TookTime%
  250. goto :eof
  251. :: eof
  252. :eof
Advertisement
Add Comment
Please, Sign In to add comment