Вот VBS скрипт, решающий похожую задачу, но с архивированием в 7z
Код:
![Выделить весь код](images/misc/selectcode.png)
' Перемещаем файлы старше указанного количества дней по маске
' из одной папки (без подпапок) в другую - промежуточную
' Упаковываем промежуточную папку с именем сегодняшней даты
' Чистим промежуточную папку
' Исходные данные ----------------
InBox = "H:\Delete\Проба пера" ' Откуда перемещаем
OutTmp = "H:\Delete\Проба пера\Tmp" ' Куда перемещаем (TMP)
OutArc = "H:\Delete\Work" ' Куда архивируем
NDays = 60 ' Файлы старше количества дней
Maska="^.*\.txt$" ' Маска файлов (здесь *.txt)
Arc="C:\Program Files\7-Zip\7z.exe" ' Путь к архиватору
' --------------------------------
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WS = CreateObject("WScript.Shell")
Set RE = New RegExp
Set InDir = FSO.GetFolder(InBox)
Set AllFiles = InDir.Files
RE.Pattern = Maska
RE.IgnoreCase = True
For Each iFile In AllFiles ' Цикл по файлам в папке
iName=iFile.Name ' Берём имя файла из папки
iDate = iFile.DateLastModified ' Берём дату модификации файла
' iDate = iFile.DateCreated ' Берём дату создания файла (если нужно убрать комментарий!)
If RE.Test(iName) And DateDiff("d", iDate, Date) > NDays Then ' Соответствует ли оно маске и дате
iFile.Move OutTmp+"\" ' Перемещаем
End If
Next
' Архивируем Tmp c именем архива = дате (я предпочитаю формат ГГГГММДД)
NArc = CStr(Date)
ArcFile = OutArc+"\"+Mid(NArc,7,4)+Mid(NArc,4,2)+Mid(NArc,1,2)+".7z" ' Имя архивного файла с путём
NArc = " a """+ArcFile+""""
NTmp = " """+OutTmp++"\*.*"""
a = WS.Run(""""+Arc+""""+NArc+NTmp,1,True)
' Удаляем файлы в TMP если архив существует
If FSO.FileExists(ArcFile) Then FSO.DeleteFile OutTmp+"\*.*", True