以前、7-zipを使って個別圧縮をできるようにした。
今回は、ファイルやフォルダをまとめて一つのアーカイブファイルにする、普通の圧縮を7-zipでできるようにする。
例えばマークファイルをカレントフォルダに圧縮したい場合は、以下のコマンドを実行する。
*script %0\Script\7z_unpack.js,%a*8FCDN,%1%*addchar(\)%{hoge%|.zip%}
7z_unpack.js
//!*script // 7-zipを実行してレスポンスファイルに記載されたファイルを圧縮する // 第一引数: レスポンスファイル // 第二引数: 出力ファイルのパス if (PPx.Arguments.Length < 2){ PPx.SetPopLineMessage("引数が正しくありません。"); PPx.Quit(-1); } // 7z.exeのパス var Exec = "C:\\Program Files\\7-Zip\\7z.exe"; var responseFile = PPx.Arguments.Item(0); var destFile = PPx.Arguments.Item(1); var sorceFiles = ""; var fso = PPx.CreateObject("Scripting.FileSystemObject"); var archiveFiles = GetList(responseFile); var parentFolder = fso.GetParentFolderName(archiveFiles[0]); for (x in archiveFiles){ if (archiveFiles[x] == ""){ break;} sorceFiles += fso.GetFileName(archiveFiles[x]) + " " } // 作業ディレクトリを変更したあと7-zipで圧縮 PPx.Execute('*cd '+parentFolder+' %: \"'+Exec+'\" a \"'+destFile+'\" '+sorceFiles); // レスポンスファイルからファイル名のリストを作成 function GetList(list) { var f = CreateObject("ADODB.Stream"); f.type = 2; f.charset = "UTF-8"; f.open; f.LoadFromFile(list); text = f.readText(-1).split("\r\n"); f.close; return text; }