Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Batch.rar
(1.8 Kb, 100 просмотров)

Вот написал такой скрипт, не судите строго, может пригодится кому-то
Код: Выделить весь код
@echo off
rem *************************************************************************************
rem 									****Переменные****				      				*
rem *************************************************************************************
rem Папка в которую складываются архивы
Set Kuda="D:\Program Files\Trash"
rem Файл-список в котором записаны названия папок для бекапа и удаления старых файлов	
set List="D:\Program Files\Batch\bak.lst"

rem Если архив с текущей датой существует - отмена бекапа
::If Exist загрузки_%Date%.rar GoTo End

Echo.
Echo  #*******************************#
Echo  * Бэкап начнется через 10 сек.  *
Echo  *-------------------------------*
Echo  * Запуск - нажми 1              *
Echo  * Отмена - нажми 2              *
Echo  #*******************************#
Echo.

rem При запуске скрипта есть выбор, автоматически через 10 секунд запустится архивация.
Choice /c 12 /t 10 /d 1
rem Переменные ErrorLevel определяют выбор пользователя или по истечению 10 сек. запускается бекап
If Errorlevel 2 Goto :Cancel
If Errorlevel 1 Goto :Start
Goto End


:Start
rem *************************************************************************************
rem 							****WinRAR**** архивация 								*
rem A Добавить файлы в архив  															*
rem -r Включить в обработку вложенные папки												*
rem -ed Не добавлять пустые папки  														*
rem -ep1 Исключить базовую папку из имён   												*
rem -ibck Запустить WinRAR как фоновый процесс в области уведомлений (системном лотке)  *
rem -m<n> Метод сжатия  																*
rem -df Удалить файлы после архивации  													*
rem -to<время> Обрабатывать файлы более старые, чем указанный период времени  			*
rem -ilog[имя] Записывать протокол ошибок в файл  										*
rem -log[формат][=имя] Записать имена в файл-протокол 									*
rem ^ перенос строк																		*
rem *************************************************************************************
Echo Архивируется...
"%programfiles%\WinRar\Winrar.exe" a -r -ed -ep1 -ibck ^
-ilog%Kuda%\%date%_backup.log -logf=%Kuda%\%date%_backup.txt ^
-m1 -df -to5h %Kuda%\%date%_backup.rar @%List%
rem Проверка архивации, если 0, то готово, если не 0, то ошибка
if errorlevel = 0 (Echo Архивация завершена!) ELSE (Echo Ошибка!)
rem Код ошибки, если нужна информация
Echo %ErrorLevel%
rem Отчет добавляем в архив
If exist %Kuda%\%date%_backup.txt "%programfiles%\WinRar\Winrar.exe" a ^
-ep -ibck -df -m1 %Kuda%\%date%_backup.rar %Kuda%\%date%_backup.txt
if errorlevel = 0 (echo Отчет внутри архива!) Else (echo Отчета нет!)

rem *************************************************************************************
rem 			****Циклическая проверка запущен ли WinRar.exe**** 						*
rem Если запущен - повторяется проверка, если нет - начинается очистка пустых папок		*
rem *************************************************************************************
:checker
tasklist /FI "IMAGENAME eq winrar.exe" /NH | findstr /i "winrar.exe">nul
if %errorLevel% == 0 goto :checker
echo Вин рар завершил работу

rem *************************************************************************************
rem 			****Удаление пустых папок из списка bak.lst**** 						*
rem Если в файл-списке записана папка из нее удаляются все пустые папки и подпапки		*
rem *************************************************************************************

rem Переключение кодировки в ANSI 1251 для распознавания русских названий папок.
rem 1>nul это скрытие вывода в консоли информации о переключении кодировки.
1>nul chcp 1251

goto start
:fn1
rem Для правильного отображения переключаем кодировку обратно.
1>nul chcp 866
for /d %%i in ("%~1\*") do (
	call :fn1 "%%i"
	rd /q "%%i"
)
exit /b
:start
rem Функция отбора папок в файл-списке.
FOR /F "usebackq delims=" %%a in (%List%) do call :fn1 %%a

rem удаление архивов старше 30 дней
FORFILES /p %Kuda% /S /D -30 /C "cmd /c del @path /f /q"

GoTo End



:Cancel
echo Отмена.
goto end
Файл bak.lst содержит названия папок для бэкапа. Более подробно описано в справке winrar (только берите винрар от 5-ой версии, там есть лог)
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:43, 15-01-2016 | #7