РЕДАКТИРОВАТЬ: Извините, я упустил из виду «невозможно загрузить дополнительные утилиты для архивирования», возможно, проведите небольшое исследование, чтобы узнать, можете ли вы аналогичным образом использовать встроенную функцию сжатия windows.
Как уже упоминалось, это невозможно сделать только с VBScript, вам понадобится внешняя программа. Если на вашем сервере установлен WinRAR, вы можете использовать WScript.Shell
для архивирования папок с помощью командной строки:
Sub ZipFolder(Folder,SaveTo,ZipName)
Dim CMD, objShell
CMD = """%ProgramFiles%\WinRAR\WinRAR.exe"" a -afzip -ep1 -ibck " &_
"""" & Server.MapPath(SaveTo) & "\" & ZipName & """ " &_
"""" & Server.MapPath(Folder) & """"
Set objShell = server.CreateObject("WScript.Shell")
Call objShell.Exec(CMD)
Set objShell = Nothing
End Sub
Call ZipFolder("documents","zip-archives","test.zip")
В этом примере папка «документы» будет заархивирована и сохранена в «zip- архивирует папку как "test.zip". ZIP-архив будет содержать папку «документы» и все ее содержимое.
-ep1
предотвращает вложенность полного базового пути. Поэтому, когда вы откроете zip-файл, вы увидите только заархивированную папку, а не вложенную структуру папок, например: inetpub/website/www/documents/[documents content]
.
-ibck
предписывает WinRAR работать в фоновом режиме.
Если вы хотите заархивировать только содержимое папки, а не саму папку, вы можете изменить:
"""" & Server.MapPath(Folder) & """"
Кому:
"""" & Server.MapPath(Folder) & "\*.*"""