WSH/zip圧縮 のバックアップ(No.1) |
|
Windows XP以降の「圧縮フォルダ」機能を使って、zip圧縮スクリプトを実現すると、こんな感じになるらしいです。ヘッダをテキスト書きするとか、割と無理を通しているかも?
<job id="addto_zipfile"> <script language="JScript"> // // Windows標準(XP以降)の機能を使って、ファイルをzip圧縮する。 // // @author Jomora ( kazuhiko@jomura.net http://jomura.net/ ) // @version 2011/05/23 // 以降、変更の必要なし var fso = new ActiveXObject("Scripting.FileSystemObject"); var shell = WScript.CreateObject("Shell.Application"); if (0 == WScript.Arguments.length) { WScript.Echo("引数を指定するか、何かファイルをドラッグ&ドロップしてみて"); WScript.Quit(); } var args = new Array(); for (var i = 0; i < WScript.Arguments.length; i++) { args[i] = fso.GetAbsolutePathName(WScript.Arguments(i)); } // 作成するZIPファイル var zipfile = fso.GetParentFolderName(args[0]) + "\\" + fso.GetBaseName(args[0]) + ".zip"; // ファイルがなければZIPファイルのひな形を作成 if (!fso.FileExists(zipfile)) { var nf = fso.CreateTextFile(zipfile, false); nf.Write("PK\5\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); nf.Close(); } // ZIPファイルのオブジェクトを取得する var zip = shell.NameSpace(zipfile); // アーカイブにファイルを追加 for (var i = 0; i < args.length; i++) { zip.CopyHere(args[i]); } // 圧縮が完了するのを待つ? WScript.Sleep(500); </script> </job>