Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Вот VBS скрипт, решающий похожую задачу, но с архивированием в 7z
Код: Выделить весь код
' Перемещаем файлы старше указанного количества дней по маске 
' из одной папки (без подпапок) в другую - промежуточную
' Упаковываем промежуточную папку с именем сегодняшней даты
' Чистим промежуточную папку

' Исходные данные ----------------

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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:27, 01-09-2009 | #8