![]() |
Файлы по маске из архивов за неделю поместить в другой архив, обозвав датой изменения
В течении недели в заданном каталоге формируются *.rar архивы. Нужно в момент запуска батника найти все существующие архивы за неделю из параметра (нет параметра у батника - найти за текущую неделю, параметр "-1" - за прошлую, "-2" - позапрошлую и т.д.), вытащить из найденных архивов по заданной маске/маскам файлы и запаковать в другой заданный каталог в новый архив с именем "ГГГГ.ММ.ДД - YYYY.MM.DD.rar", где "ГГГГ.ММ.ДД" - дата изменения самого свежего архива/архивов обрабатываемой недели, "YYYY.MM.DD" - дата изменения самого позднего найденного архива/архивов обрабатываемой недели.
Если за неделю отсутствуют архивы или нужные файлы по маске/маскам в них не найдены, то батник не должен создать новый архив. Если найдены архивы с файлами только за один день или нужные файлы есть в архивах только за один день среди всех найденных архивов - имя нового архива очень желательно в виде одной даты "yyyy.mm.dd.rar". Спасибо всем откликнувшимся. |
keisersoze, не понятно, если в неделе вы каждый день запустите батник без параметра 7 раз, то получите 7 архивов с частично повторяющимися файлами и только последний архив будет полным за неделю.
Я бы предложил именовать все архивы датавоскресенья-датапонедельника в заданном вами формате, тогда запускайте батник хоть сто раз, полУчите нормальный архив в конце концов. Либо делайте архив за каждый день отдельно с именем даты. ИМХО, самый свежий==самый поздний :) |
megaloman, Батник не будет запускаться 7 раз, однако день, когда его будет необходимо запустить и обработать указанные архивы, становится известен не заранее (обычно это пт-вс, но всякое бывает) - по почте прилетает письмо, что на этой неделе больше не будет данных. Таким образом возможен запуск для текущей недели только 1 раз и пока вручную, когда точно известно что в текущей неделе ничего не изменится.
|
keisersoze, Вот решение, в предположении, что в системе дата отображается в виде дд.мм.гггг. Кроме того, понедельник-1 день недели. При работе в выходной папке создаётся временная подпапка с именем ггггммдд воскресенья заданной недели, которая в конце работы батника удаляется.
Получилось громоздко из-за подсчета дат
Код:
@Echo off В предложенном решении я заимствовал 2 процедуры, их авторов указать затрудняюсь: подсчет номера дня недели и пересчёт даты на заданное количество дней. |
megaloman, а есть возможность сделать чтобы новый архив к примеру вместо 20160520-20160516.rar был 2016.05.16-2016.05.20.rar ?
|
Можно. Замените кусочек кода
Код:
If Not !Name1!==0 ( |
megaloman, и еще дату "развернуть"..
можно просто заменить эту строчку Код:
If Not !Name1!==!Name2! Set Name1=!Name1!-!Name2! Код:
If Not !Name1!==!Name2! Set Name1=!Name2!-!Name1! Подскажите еще пожалуйста, можно еще приделать, чтобы после создания архива за неделю перемещались обработанные ежедневные архивы в заданный каталог? |
keisersoze, Дату Вы "разворачиваете" нормально.
Чтобы после Set "InBox=D:\Delete\DirIn" Set "OutBox=D:\Delete\DirOut" Set "ArcBox=D:\Delete\DirArc" Set Proc="%Arc%" e -y "%InBox%\%%f" "%OutMask%" Echo !Proc! !Proc! >nul 2>nul Move /Y "%InBox%\%%f" "%ArcBox%\" >nul |
megaloman, тут не после создания, а после распаковки. ну и ладно, все хорошо работает, спасибо )
|
Время: 07:30. |
Время: 07:30.
© OSzone.net 2001-