WSH/JScriptでZIPファイルを作成する方法を紹介。仕組みとしては、Windowsのエクスプローラーの力を利用します。まず、空のZIPファイルを作っておいて、その中にファイルをコピーするという要領です。
function toZip(zipfile, files) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var shell = new ActiveXObject("Shell.Application"); // ZIPファイルの箱を作る var targetZip = fso.CreateTextFile(zipfile, true); targetZip.Write("PK" + String.fromCharCode( 5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)); targetZip.Close(); // ファイルを追加する var zipAsFolder = shell.NameSpace( fso.GetAbsolutePathName(zipfile)); for (var i in files) { var file = files[i]; // ZIPファイルに追加 zipAsFolder.CopyHere(fso.GetAbsolutePathName(file)); // 追加作業待ち while (true) { WScript.Sleep(100); try { fso.OpenTextFile(zipfile, 8, false).Close(); break; } catch (e) { /* writing */ } } } }
ただし、圧縮対象内にサブフォルダなどがあり、同名ファイルがあると上書きしてしまうので注意。
【参考にしたページ】