PDA

Показать полную графическую версию : Автоматическое архивирование


John87
02-06-2023, 07:08
День добрый,

задача встала довольно запутанная, в принципе можно cmd или powershell, также без разницы winrar или 7zip

собственно задача
есть папки
c:\source\in
c:\source\out
c:\source\compl
c:\source\eror

в каждой папке есть файл in.dat, out.dat, compl.dat, eror.dat, который архивировать не нужно, для остальных файлов - создать архив, допустим в c:\archive\дата_создания.zip/rar ну и внутри собственно эти папки.

после создания архива добавить строчку отчета в c:\source\archive.log (дата/время заархивировано 100500 файлов) и для полного счастья из папок удалить файлы старше недели, файлы in.dat, out.dat, compl.dat, eror.dat не трогать.. если же архивирование не удалось по какой либо причине - записать ошибку и файлы соответственно не удалять

как то так

DJ Mogarych
02-06-2023, 13:38
Читали?
http://forum.oszone.net/search.php?searchid=12832156

Если с командной строкой на "вы", возьмите что-нибудь типа Cobian Reflector.

John87
02-06-2023, 14:42
DJ Mogarych, в принципе что хотел за день сделал +-

chcp 1251
@echo off

Set Kuda="C:\arch"
Set List="C:\test\bak.lst"

"%programfiles%\WinRar\Winrar.exe" a -x@C:\test\iskl.lst -r -ep1 -ilog%Kuda%\%date%_backup.log -logf=%Kuda%\%date%_backup.txt -m1 %Kuda%\%date%_backup.rar @%List%

единственная задача осталась, удалить файлы из 3 папок.. за исключением in.dat, out.dat, compl.dat, eror.dat, пробовал заменить команду А на М или добавить ключ -df, но он при этом пытается удалить саму папку, тк файл внутри я добавил в исключение, он видит что папка не пуста и не удаляет.. но задача очистить папку внутри, а не удалить ее!

смотрю на Forfiles, но там нет флага исключения.. как удалить все внутри папки кроме 1 файла?

megaloman
02-06-2023, 16:23
@Echo Off &Cls
Set "BoxIn=Z:\Source"
Set "BoxOut=Z:\Box_Arc"
Set /A Old=7

Set "Arc=C:\Program Files\WinRar\WinRAR.exe"
Set "Excl=-x*\in.dat -x*\out.dat -x*\compl.dat -x*\eror.dat"

"%Arc%" a -r %Excl% -AGYYYYMMDD -to%Old%d -df "%BoxOut%\.rar" "%BoxIn%\"
"%Arc%" a -r %Excl% -AGYYYYMMDD "%BoxOut%\.rar" "%BoxIn%\"
pause
Exit /B
Пути пропишите свои
Не знаю, насколько существенно, у меня WinRar 6.11@Echo Off &Cls
Set "BoxIn=Z:\Source"
Set "BoxOut=Z:\Box_Arc"
Set /A Old=7

Set "Dt=%Date:~-4%%Date:~3,2%%Date:~0,2%"
Set "Log=Z:\Box_Arc\%Dt%.Log"

Set "Arc=C:\Program Files\WinRar\RAR.exe"
Set "Excl=-x*\in.dat -x*\out.dat -x*\compl.dat -x*\eror.dat"

2>"%Log%" "%Arc%" a -r %Excl% -to%Old%d -df "%BoxOut%\%Dt%.rar" "%BoxIn%\"
2>>"%Log%" "%Arc%" a -r %Excl% "%BoxOut%\%Dt%.rar" "%BoxIn%\"

>>"%Log%" "%Arc%" l "%BoxOut%\%Dt%.rar"
Exit /B
Важно: формат даты в системе дд.мм.гггг

John87
05-06-2023, 11:29
megaloman,
>>"%Log%" "%Arc%" l "%BoxOut%\%Dt%.rar

тут что должно было быть?

winrar ругается что не знает команды L

ну и лога естественно нема (

megaloman
05-06-2023, 12:25
John87, У Winrar.exe нет команды L, а у Rar.exe есть. Я Вам дал два рабочих кода. Обратите внимание, там разные .exe

John87
05-06-2023, 13:42
megaloman, с разными рар понял, в другом запутался (
2>"%Log%" "%rar%" a -r -ibck %Excl% -to%Old%d -df "%BoxOut%\%Dt%.rar" "%BoxIn%\"
2>>"%Log%" "%rar%" a -r -ibck %Excl% "%BoxOut%\%Dt%.rar" "%BoxIn%\"
при такой постановке он новый файл в папке не удаляет (что правильно), но зачем то добавляет его в архив

впрочем, если старые будут удалены и запускать раз в неделю то разницы большой нет, просто как заметка




© OSzone.net 2001-2012