Pull to refresh

VBS скрипт для резервного архивирования

Доброго вечера.
Озадачился тут резервным копированием данных у клиента, ну и конечно очистка хранилища от старых бэкапов. Тема в принципе замылиная, но сторонний софт я не люблю для этого использовать, а 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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.