Показать полную графическую версию : Автоматическое архивирование
День добрый,
задача встала довольно запутанная, в принципе можно 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.
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
Важно: формат даты в системе дд.мм.гггг
megaloman,
>>"%Log%" "%Arc%" l "%BoxOut%\%Dt%.rar
тут что должно было быть?
winrar ругается что не знает команды L
ну и лога естественно нема (
megaloman
05-06-2023, 12:25
John87, У Winrar.exe нет команды L, а у Rar.exe есть. Я Вам дал два рабочих кода. Обратите внимание, там разные .exe
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.