Можно ли запрограммировать встроенное ZIP-сжатие Windows?

Да, это можно написать с windows-programming помощью VBScript. Например, следующий batch код может создать ZIP-файл .bat из каталога:

Dim fso, winShell, MyTarget, MySource, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set winShell = createObject("shell.application")


MyTarget = Wscript.Arguments.Item(0)
MySource = Wscript.Arguments.Item(1)

Wscript.Echo "Adding " & MySource & " to " & MyTarget

'create a new clean zip archive
Set file = fso.CreateTextFile(MyTarget, True)
file.write("PK" & chr(5) & chr(6) & string(18,chr(0)))
file.close

winShell.NameSpace(MyTarget).CopyHere winShell.NameSpace(MySource).Items

do until winShell.namespace(MyTarget).items.count = winShell.namespace(MySource).items.count
    wscript.sleep 1000 
loop

Set winShell = Nothing
Set fso = Nothing

Вы также можете windows найти http://www.naterice.com/blog/template_permalink.asp?id=64 полезным, так как zip он включает в себя полную windows реализацию Unzip/Zip в VBScript.

Если windows-applications вы выполняете проверку размера batch-file каждые 500 мс, а не количество scripts элементов, это работает лучше dos-batch для больших файлов. Win 7 zip записывает файл мгновенно, хотя batch-file он еще не сжат:

set fso=createobject("scripting.filesystemobject")
Set h=fso.getFile(DestZip)
do
    wscript.sleep 500
    max = h.size
loop while h.size > max 

Отлично работает windows с огромным количеством лог-файлов.

windows

vbscript

batch-file

zip

scripting

2022-06-05T14:48:18+00:00
Вопросы с похожей тематикой, как у вопроса:

Можно ли запрограммировать встроенное ZIP-сжатие Windows?