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

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

Ветеран


Contributor


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

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


Идея решения - используем распространённый архиватор WinRar, у которого есть ключи
-df - архивировать с удалением файлов
-tb - архивировать файлы старше указанного времени
Берём системную дату, преобразуем её в вид, пригодный для архиватора, запускаем архиватор с указанными ключами для архивации файлов на начало текущих суток.
При желании анализируем наличие архива (строка с If) и позволяем работать архиватору не чаще раза в сутки.
Вот батник:

rem ---------------------------------------------------------------
rem Надо настроить:
rem Gde - Папка, где берём файлы для архивирования и удаления
rem Kuda - Папка, где храним архивы
rem TDate - Дата в формате ГГГГММДД
rem В приведенном батнике дата преобразуется из системной переменной %Date%
rem Для Win XP или 2003 %Date% по умолчанию выдаётся в формате ДД.ММ.ГГГГ
rem При необходимости написать своё преобразование

Set Gde=D:\Obmen
Set Kuda=D:\Obmen.arh

Set TDate=%date:~6,4%%date:~3,2%%date:~0,2%

If Exist %Kuda%\%TDate%.rar GoTo End

MD %Kuda%

"%programfiles%\WinRar\Winrar.exe" a -r -df -tb%TDate%0001 %Kuda%\%TDate%.rar %Gde%\*.*

:End
rem ---------------------------------------------------------------

Обратите внимание, что содержимое папки архивируется с подпапками (ключ -r). Поэтому архивную папку нельзя помещать внутрь архивируемой папки.
Не храните бат-файл внутри архивируемой папки - архиватор в конце концов его удалит.
И, наконец, если WinRar установлен не в Program Files, напишите правильный к нему путь

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-08-2009 в 19:34. Причина: Уточнение

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:13, 25-08-2009 | #3