WSH で unzip

ひさびさ。

via http://forums.msdn.microsoft.com/ja-JP/netfxbcl/thread/845f358f-02a8-444c-9d9f-dd8348cd5d88/
言語はなんでも大丈夫だろう。

unzip('foo.zip', 'bar');

function unzip(file, dir) {
  if (!file || !file.match(/\.zip$/))
    return false;

  var fso = new ActiveXObject('Scripting.FileSystemObject');
  if (!fso.FileExists(file))
    return false;

  if (!dir)
    dir = '.';
  if (!fso.FolderExists(dir))
    fso.CreateFolder(dir);

  var shell = new ActiveXObject('Shell.Application');
  var dst = shell.NameSpace(fso.getFolder(dir).Path);
  var zip = shell.NameSpace(fso.getFile(file).Path);
  dst.CopyHere(zip.Items(), 4 + 16);

  return true;
}