1 (изменено: alexii, 2013-01-09 13:07:12)

Тема: VBScript: добавить файлы в архив 7zip

Нужно файлы удовлетворяющие определенному условию добавить в архив, причем 7zip. Я нуб и что то гугл не помог мне в данном вопросе.

2

Re: VBScript: добавить файлы в архив 7zip

Маски файлов можно задавать в комстроке 7-zip и без участия скриптов. Что за опр. условие?

3

Re: VBScript: добавить файлы в архив 7zip

У меня задача создать скрипт который будет архивировать и удалять все логи кроме последних N дней. Я нашел скрипт который удаляет файлы

' RemoveFilesbyTime.vbs 
'========================   Описание   ============================= 
' Удаление в указанной папке и подпапках файлов старше указанного дня 
' Удаляются так же папки старше указанной даты, если они пустые 
' Использовать крайне аккуратно!!! 

'=================   Изменяемые параметры   ======================= 
Folder  = "D:\123" ' папка в которой удаляются файлы 
N = 2                    ' день старше которого файлы удаляются 
'================================================================ 
Set FSO = CreateObject("Scripting.FileSystemObject") 
ControlDate = Date - N 
If Right(Folder, 1) = "\" Then Folder = Left(Folder, Len(Folder) - 1) 
If FSO.FolderExists(Folder) = False Then 
Else 
    Set FFF = FSO.GetFolder(Folder) : Call ScanFold(FFF) : Set FFF = Nothing 
End If 
Set FSO = Nothing : WScript.Quit 

Function ScanFold(FFF) 
     For Each SF In FFF.SubFolders 
       Call ScanFold(SF) 
     Next 
     For Each objFile In FSO.GetFolder(FFF).Files 
       On Error Resume Next 
       If objFile.DateLastModified < ControlDate Then FSO.DeleteFile objFile.Path 
     Next 
     On Error Resume Next 
     If FFF.DateLastModified < ControlDate And FFF.Size = 0 Then 
       If LCase(FFF) <> LCase(Folder) Then FSO.DeleteFolder FFF 
     End If 
End Function


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

4

Re: VBScript: добавить файлы в архив 7zip

А паковать-то надо те, что удаляются или те, что остаются?

5

Re: VBScript: добавить файлы в архив 7zip

паковать, а потом то что запаковано удаляется

6 (изменено: OLIKsey, 2013-01-14 10:28:52)

Re: VBScript: добавить файлы в архив 7zip

Нашел скрипт, но почему то не могу исправить маску.

' Перемещаем файлы старше указанного количества дней по маске 
' из одной папки (без подпапок) в другую - промежуточную
' Упаковываем промежуточную папку с именем сегодняшней даты
' Чистим промежуточную папку

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

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

Маска должна быть *.yyyy-mm-dd. Че то долго мучаюсь уже(( Получилось только по 1 последнему файлу копировать по заданной маске, наверно я что то делаю не так....

7

Re: VBScript: добавить файлы в архив 7zip

открыл статью о регулярных выражениях и оказалось все просто в итоге маска выглядела так

Maska="^.*\.....-..-..$"