Advertisement
Guest User

BACKUP.BAT

a guest
Oct 23rd, 2014
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. @echo off
  3. Endlocal
  4. SetLocal EnableDelayedExpansion
  5. chcp 1251
  6. :: меняем кодировку, чтобы нормально обрабатывались кириллические имена файлов
  7. :: вот что будет, если имена не латиница и не кириллица — даже не догадываюсь...
  8. :: хотя вроде можно обработать и их, используя маски вместо реальных имёи
  9.  
  10. :: для запуска батника нужно указать хотя бы один параметр
  11. if [%1]==[] goto help
  12.  
  13. :: указываем архиватор, можно поменять 7z на 7za и указать полный путь к программе, если она у вас не в %PATH%; теоретически, можно поменять и на другой (rar или ещё что), но очевидно, что какие-то части батника придётся переписывать под новую программу
  14. :: заодно указываем формат создаваемого архива, -t7z означает 7z-архив
  15. set archiver=7z a -t7z
  16. :: указываем список исключаемых путей и файлов; у меня он лежит в папке %WINDIR%
  17. :: здесь можно указать дополнительные опции, например, я указал -mx9 (максимальное сжатие), можно ещё добавить пароль с помощью ключа -p, например -pqwerty, или -p123 (но лучше пароли посложнее придумать :D ), ещё можно добавить -mhe, чтобы шифровались и имена файлов
  18. :: можно указывать дополнительные опции для каждого случая отдельно, см. ниже
  19. set options=-x@%WINDIR%\exclude.lst -mx9
  20.  
  21. :: узнаём текущую дату; если бэкапы делаются часто, может потребоваться указывать и время, тогда берём %TIME% и распиливаем на кусочки по аналогии — можете скатать готовый код из cjpeg.bat из беты+
  22. set currdate=%DATE%
  23. set day=!currdate:~0,-8!
  24. set month=!currdate:~3,-5!
  25. set year=!currdate:~8!
  26.  
  27. :: указываем папку с бекапами; переменная %prefix% будет передаваться 7z как путь к создаваемому архиву
  28. set prefix=I:\Uploads\Backups
  29. :: указываем конец имени файла, с расширением и датой
  30. set postfix=%day%_%month%_%year%.7z
  31.  
  32. :: если первым параметром будет слово all, то сделаем все бекапы, иначе — только те, что были указаны юзером
  33. if [%1]==[all] (
  34.     set cmdline=bsp icons mine src twice
  35. ) else (
  36.     set cmdline=%*
  37. )
  38.  
  39. :: собственно, делаем бэкапы
  40. for %%b in (%cmdline%) do (
  41.     call :%%b
  42. )
  43.  
  44. ::завершаем работу батника
  45. goto end
  46.  
  47. :bsp
  48.  
  49. :: указываем основную часть имени архива, по которой мы будем определять, что же он хранит
  50. set name=BSPquakeditor
  51. :: указываем то, что будем хранить; в данном случае — содержимое (не саму папку) каталога BSPquakeditor
  52. set paths=C:\Games\Mapping\BSPquakeditor\*
  53. :: проверяем, есть ли уже нас бэкапы этого добра; если есть — удаляем
  54. :: вероятно, вас может не устраивать подобная политика, переписывайте под себя
  55. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  56. :: создаём бэкап; можно дописать в конец дополнительные опции, напр., те же пароль и шифрование, если мы не указываем их в переменной %options%
  57. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  58. :: переходим в конец батника, чтобы выйти из "подпрограммы"
  59. goto eof
  60.  
  61. :icons
  62.  
  63. set name=icons
  64. :: здесь мы добавляем папку icons
  65. set paths="C:\Downloads\icons\"
  66. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  67. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  68. goto eof
  69.  
  70. :mine
  71.  
  72. set name=Minecraft
  73. :: мы можем добавить несколько путей и/или файлов
  74. set paths=C:\Games\Minecraft\.minecraft\ C:\Games\Minecraft\*.bat
  75. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  76. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  77. goto eof
  78.  
  79. :src
  80.  
  81. :: мы можем запустить и другие команды, батники, программы, если это вдруг требуется
  82. :: здесь мне пришлось перейти в папку на другом диске, чтобы обойти тупость 7-zip'a
  83.  
  84. C:
  85. :: ставим бэкслэшик в начале, чтобы гарантированно попасть в папку, расположенную в корне диска
  86. cd \Games\Mapping\UltimateSSDKv2\
  87. set name=Source_mapping
  88. set paths="Source Engine 2006\hl2\materials\" "Source Engine 2006\hl2\sound\" SourceSDK_Content\generic\mapsrc\ SourceSDK_Content\oldarkinterval\mapsrc\ SourceSDK_Content\oldarkinterval\materials\xDDGx\ Uploads\
  89. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  90. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  91. goto eof
  92.  
  93. :twice
  94.  
  95. :: можно объединить два взаимосвязанных бэкапа под одной меткой
  96.  
  97. set name=lectio
  98. set paths=C:\Files\lectio\*
  99. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  100. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  101.  
  102. set name=documents
  103. set paths=C:\Files\documents\*
  104. if exist %prefix%\%name%_* del /Q /F %prefix%\%name%_*
  105. %archiver% %prefix%\%name%_%postfix% %paths% %options%
  106.  
  107. goto eof
  108.  
  109. :help
  110.  
  111. :: здесь мы выводим все доступные цели, если запустили батч без параметров
  112. :: если хочется выводить русский текст, перекодируйте файл в CP866 (OEM866)
  113.  
  114. echo.
  115. echo valid options are:
  116. echo     all - backup all targets
  117. echo     bsp
  118. echo     icons
  119. echo     mine
  120. echo     src
  121. echo     twice
  122. echo.
  123.  
  124. :end
  125. Endlocal
  126.  
  127. :eof
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement