Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


Для начала я бы провёл организационные мероприятия. Все архивы поместил бы в отдельную папку. Очень неплохо, чтобы там батник делал подпапки с именем, содержащим год и месяц (и, может быть, день), в которые бы архивы создавались - зачем нужны архивы за неопределённый период. Туда бы записывал лог. В принципе, и батник можно поместить туда же. И, прежде чем удалять исходный файл, я бы убедился, что архив существует (а вдруг место на диске исчерпалось, а файлы будем удалять ...). И, кроме того, я бы застраховался от того, что два файла имеют одинаковые имена, но разные расширения, так как такие файлы обычно архиватором архивируются с одинаковыми именами-расширениями и, в лучшем случае, получим архив с несколькими файлами с одинаковыми именами и разными расширениями. А просили заархивировать каждый файл отдельно.
Код: Выделить весь код
Set Source=D:\Source
Set Arch=D:\Source\Arch
Set ExtArc=7Z
Set LogFile=D:\Source\Arch\{Archives.log

Set PgmArc="C:\Program Files\7-Zip\7z.exe" 

Set DirDay=%Arch%\%Date:~6,4%%Date:~3,2%%Date:~0,2%
md "%DirDay%"

FOR %%i IN ("%Source%\*.*") DO Call :Arhivator "%%i"
GoTo :Eof

:Arhivator

Set N=%DirDay%\%~nx1.%ExtArc%

%PgmArc% a "%N%" %1

If Exist "%N%" (
  Echo %Date%  %Time%  %N%  >>%LogFile%
  Del %1
)
Source - где исходные файлы
Arch - где архивы
ExtArc - расширение, с которым создаётся архив
LogFile - куда пишется лог-файл
PgmArc - где архиватор (я делал для 7Z)

Например, файл D:\Source\траляля.exe
будет заархивирован в файл D:\Source\Arch\20100909\траляля.exe.7Z
и если файл D:\Source\Arch\20100909\траляля.exe.7Z существует, то удалим D:\Source\траляля.exe

Батник помещаем в назначенные задания, где укажем время его выполнения.
Можно при желании сделать в лог файле выдачу размера каждого файла до и после архивации.

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


Последний раз редактировалось megaloman, 10-09-2010 в 09:43.

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

Отправлено: 20:38, 09-09-2010 | #8