Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Автоматическое архивирование (http://forum.oszone.net/showthread.php?t=353645)

John87 02-06-2023 07:08 3009896

Автоматическое архивирование
 
День добрый,

задача встала довольно запутанная, в принципе можно 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 3009918

Читали?
http://forum.oszone.net/search.php?searchid=12832156

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

John87 02-06-2023 14:42 3009921

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 3009923

Код:

@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 3010053

megaloman,
>>"%Log%" "%Arc%" l "%BoxOut%\%Dt%.rar

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

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

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

megaloman 05-06-2023 12:25 3010054

John87, У Winrar.exe нет команды L, а у Rar.exe есть. Я Вам дал два рабочих кода. Обратите внимание, там разные .exe

John87 05-06-2023 13:42 3010056

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%\"

при такой постановке он новый файл в папке не удаляет (что правильно), но зачем то добавляет его в архив

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


Время: 07:50.

Время: 07:50.
© OSzone.net 2001-