É possível zipar ficheiros sem instalação de qualquer software adicional (testei-o). A solução é:
Execute-o numa janela de linha de comando para criar um ficheiro ZIP chamado C:\someArchive.zip
contendo todos os ficheiros na pasta C:\test3
:
CScript zip.vbs C:\test3 C:\someArchive.zip
Onde o ficheiro zip.vbs
contém:
' 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
Não o testei para caminhos e nomes de ficheiros contendo espaços. Pode funcionar se forem colocadas aspas em torno dos parâmetros da linha de comando.
Como funciona: a funcionalidade zip integrada no Windows (Windows XP e posteriores?) é exposta através das interfaces COM da shell do Windows, explorer.exe - que é a parte “Shell.Application”. Esta interface COM pode ser usada a partir de um script VBScript porque esse script pode acessar os componentes COM. Para tornar o script totalmente auto-contido ele cria um arquivo ZIP vazio para começar (pode-se também criar um arquivo ZIP vazio e copiá-lo para o sistema alvo junto com o script VBScript).
VBScript foi instalado por padrão em cada versão desktop do Microsoft Windows desde Windows 98.
CScript.exe
é parte do Windows Script Host . O Windows Script Host é distribuído e instalado por padrão no Windows 98 e em versões posteriores do Windows. Também é instalado se Internet Explorer 5 (ou uma versão posterior) estiver instalado.