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 */ }
    }
  }
}

ただし、圧縮対象内にサブフォルダなどがあり、同名ファイルがあると上書きしてしまうので注意。

【参考にしたページ】