Озадачился тут резервным копированием данных у клиента, ну и конечно очистка хранилища от старых бэкапов. Тема в принципе замылиная, но сторонний софт я не люблю для этого использовать, а 7zip как то на сервере не прижился. Вот и утопал в поисках прекрасного скрипта для данного мероприятия. Покопавшись в сети нашёл интересную статейку, но в том скрипте не хватало части функционала, а многие найденные были слишком громозкими, а во многих почему то были допущены детские ошибки(подозреваю что нарочно, правда не понятно зачем).
Собственно тело vbs скрипта, универсилизировал как смог:
'== Аргументы для запуска скрипта: C:\Путь-какую-папку-архивировать\ С:\Путь-куда-архивировать\ Название-файла.zip Срокжизнифайлов
'========= Итог файл с названием \Дата.архивирования.папки_Название-файла.zip
On Error Resume Next
'================= Комментировать блок если вариант без аргументов ===========|
Set objArgs = WScript.Arguments ' Какую папку архивировать ===================|
InputFolder = objArgs(0) ' Путь какую папку архивировать =====================|
OutputFolder = objArgs(1) ' Путь куда архивировать ===========================|
ZipFile = OutputFolder & Date & "_" & objArgs(2) ' Как назвать ===============|
Life = "-" & objArgs(3) ' Срок жизни фойлов в папке архивирования ============|
'=============================================================================|
'================= Комментировать блок если вариант с аргументами =============|
'InputFolder = "F:\test\" ' Какую папку архивировать ==========================|
'OutputFolder = "D:\test\" ' Путь куда архивировать ===========================|
'ZipFile = OutputFolder & Date & "_test.zip" ' Как назвать ====================|
'Life = "-10" ' Срок жизни фойлов в папке архивирования =======================|
'==============================================================================|
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
Do Until objShell.NameSpace(ZipFile).Items.Count = objShell.NameSpace(InputFolder).Items.Count
WScript.Sleep 500 ' Arbitrary polling delay
Loop
'Удаление в папке всех файлов старше Life дней.
Set FSO = CreateObject("Scripting.FileSystemObject")
'Выставляем количество дней, старше которых будет производится удаление файлов.
OldDate = DateAdd("d", Life , date)
'Указываем директорию в которой удаляем старые файлы.
Set Folder = FSO.GetFolder(OutputFolder)
Set FC = Folder.Files
For Each F1 in FC
If F1.DateLastModified < OldDate Then
F1.Delete
End If
Next
Соответственно можно задавать параметры в теле скрипта непременным, либо аргументами при запуске вида:
cscript zip.vbs C:\Путь-какую-папку-архивировать\ С:\Путь-куда-архивировать\ Название-файла.zip Срокжизнифайлов
И конечно не забываем про пробелы.
Не забываем раскоментировать нужный блок и закоментировать не нужный.
Для написания сего была использована следующая статья www.raymond.pro/poleznye-programmy/skriptovanie/arhivirovanie-zip-ispolzua-windows-vbs