sindrom_89, Давайте уточним:
1. Надо (ежедневно?) архивировать (с удалением заархивированных) файлы D:\BackUpDB\KoDB*.bak старше 7 дней в папку D:\Archive
Вопрос: с каким именем, как оно образуется? Или в один архив (опять же, с каким именем?) ? Периодичность архивации (ежедневно?)?
2.
Цитата sindrom_89:
папки D:\Archive копировать в папку D:\Archive\OLD файлы всех архивов 15 и 30 числа каждого месяца »
|
Логика вопроса требует не копировать, а перемещать. Да и 30 февраля выглядит как-то одиозно. Может быть 1-го и 15?
Вот вариант, укажите правильно пути
Код:
@Echo Off
cls
:В системе дата должна быть в формате ДД.ММ.ГГГГ
Set "BoxIn=Z:\Box_In"
Set "Mask=KoDB*.bak"
Set "BoxOut=Z:\Box_Out"
Set "BoxArc=Z:\Box_Out\Old"
Set /A ND1=1
Set /A ND2=15
Set /A DOld=7
Set "Arc="C:\Program Files\WinRAR\WinRar.exe" a -ep -to%DOld%d -df"
Set "DD=%Date:~0,2%"
Set "MM=%Date:~3,2%"
Set "YYYY=%Date:~6,4%"
Set /A ND=1%DD%-100
Set /A DD1=%ND1%+100
Set "DD1=%DD1:~-2%"
Set /A DD2=%ND2%+100
Set "DD2=%DD2:~-2%"
If %ND1% LEQ %ND% If %ND% LSS %ND2% Set "NameDir=%YYYY%%MM%%DD1%"
If %ND% GEQ %ND2% Set "NameDir=%YYYY%%MM%%DD2%"
If Not Exist "%BoxArc%\%NameDir%\*.*" (
Md "%BoxArc%\%NameDir%"
Move /Y "%BoxOut%\*.*" "%BoxArc%\%NameDir%\" >nul
)
%Arc% "%BoxOut%\%YYYY%%MM%%DD%.rar" "%BoxIn%\%Mask%"
GoTo :Eof
Как это работает:
Лучше всего батник поместить в планировщик и выполнять каждый день (хотя можно и чаще, можно и реже)
До начала архивации в батнике анализируется день в дате.
Если день, допустим, 1<=ДД<15, или ДД>=15 и нет папки соответственно BoxArc\ГГГГММ01 или BoxArc\ГГГГММ15, то эта папка создаётся и всё содержимое папки BoxOut переносится туда.
Далее архивируются файлы из папки BoxIn по указанной маске старше указанного количества дней в папку BoxOut под именем ГГГГММДД.rar Архиватор удаляет исходные файлы.