Это is возможность zip-файлов без установки дополнительного программного обеспечения (я протестировал его). Решение следующее:
Запустите его в окне командной строки, чтобы создать ZIP-файл с именем C:\someArchive.zip
, содержащий все файлы в папке C:\test3
:
CScript zip.vbs C:\test3 C:\someArchive.zip
Где файл zip.vbs
содержит:
' Get command-line arguments.
Set objArgs = WScript.Arguments
Set FS = CreateObject("Scripting.FileSystemObject")
InputFolder = FS.GetAbsolutePathName(objArgs(0))
ZipFile = FS.GetAbsolutePathName(objArgs(1))
' Create an empty ZIP file.
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)
' Required to let the ZIP command execute
' If this script randomly fails or the ZIP file is not complete,
' just increase to more than 2 seconds
wScript.Sleep 2000
Я не тестировал его на наличие путей и имён файлов, содержащих пробелы. Это может работать, если кавычки будут заключены в параметры командной строки.
Как это работает: встроенная функциональность zip в Windows (Windows XP и более поздние версии?) открывается через COM интерфейсы из оболочки Windows, explorer.exe - это часть “Shell.Application”. Этот COM-интерфейс может быть использован из VBScript скрипта, потому что такой скрипт может получить доступ к COM-компонентам. Чтобы сделать скрипт полностью самодостаточным, он создает пустой ZIP-файл для запуска (можно также создать пустой ZIP-файл и скопировать его в целевую систему вместе со скриптом VBScript).
VBScript по умолчанию устанавливается в каждом выпуске рабочего стола Microsoft Windows, начиная с Windows 98.
CScript.exe
является частью Windows Script Host . Windows Script Host распространяется и устанавливается по умолчанию на Windows 98 и более поздних версиях Windows. Он также устанавливается при установке Internet Explorer 5 (или более поздней версии).