Тема: VBScript: добавить файлы в архив 7zip
Нужно файлы удовлетворяющие определенному условию добавить в архив, причем 7zip. Я нуб и что то гугл не помог мне в данном вопросе.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBScript: добавить файлы в архив 7zip
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Нужно файлы удовлетворяющие определенному условию добавить в архив, причем 7zip. Я нуб и что то гугл не помог мне в данном вопросе.
Маски файлов можно задавать в комстроке 7-zip и без участия скриптов. Что за опр. условие?
У меня задача создать скрипт который будет архивировать и удалять все логи кроме последних 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
мне кажется что можно дописать имеющийся скрипт, с помощью инструмента, который добавлял бы файлы к предварительно созданному архиву
А паковать-то надо те, что удаляются или те, что остаются?
паковать, а потом то что запаковано удаляется
Нашел скрипт, но почему то не могу исправить маску.
' Перемещаем файлы старше указанного количества дней по маске
' из одной папки (без подпапок) в другую - промежуточную
' Упаковываем промежуточную папку с именем сегодняшней даты
' Чистим промежуточную папку
' Исходные данные ----------------
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 последнему файлу копировать по заданной маске, наверно я что то делаю не так....
открыл статью о регулярных выражениях и оказалось все просто в итоге маска выглядела так
Maska="^.*\.....-..-..$"Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться