選択されたファイルを圧縮する その3 2011-02-20 (Sun) 23:48

以前に書いた記事、
選択されたファイルを圧縮する
選択されたファイルを圧縮する その2

では、zip,7-zip それぞれ別々にコードを書いていたが、ソースを見れば解る通り処理の内容自体は同じなので、圧縮パラメタと拡張子をスクリプトを呼び出すときにパラメタとして与えてやれば、コードは一つで十分だ。

Include:JScript ファイル圧縮.js '.zip' ' a -tzip -mx=5 -r -y -scsWIN '


以前書いたとおり、こんな感じで渡せるのかと思ったがうまくいかなかったので放っておいたのだが、「環境変数」で渡してやれば良いじゃん!と今頃気付いた。(もっと早く気付けよ~)
「環境変数」については X-Finderのマニュアルを参照のこと。


ランチャの設定

パス (設定例 7-zipの場合)

Set:Arg1=7z
Set:Arg2="C:\\Program Files\\7za\\7za.exe"
Set:Arg3=a -t7z -ms=off -mx=7 -r -y -scsWIN
Include:JScript ファイル圧縮.js


Arg1 : 圧縮ファイルの拡張子
Arg2 : 圧縮に使用するプログラムのパス ← これもパラメタにしておいた方がよかろう。
Arg3 : 圧縮パラメタ

動作

パスを実行



ファイル圧縮.js の内容

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateTrue = 0, TristateFalse = -1, TristateUseDefault = -2;

var i = 0;
var oSh = new ActiveXObject("WScript.Shell");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var cSel = WScript.Col(WScript.Env('Selected'));
var sBnam = oFs.GetBaseName(cSel.Item(0));
var sExt = '.' + WScript.Env('Arg1');
var sName = sBnam + sExt, sNam2;
var sTemp = WScript.Env('Temp') + '\\' + oFs.GetTempName();
var sPgpath = WScript.Env('Arg2');
var sPara = WScript.Env('Arg3');
var oTf = oFs.OpenTextFile(sTemp, ForWriting, true, TristateUseDefault);

oSh.CurrentDirectory = oFs.GetParentFolderName(cSel.Item(0));
while(true){
    if(oFs.FileExists(sName))
        sName = sBnam + ' (' + (++i).toString(10) + ')' + sExt;
    else
        break;
}
for(i = 0; i < cSel.Count; i++){
    oTf.WriteLine('"' + cSel.Item(i) + '"');
}
oTf.Close();
sNam2 = '"' + sName + '"';
oSh.Run(sPgpath + ' ' + sPara + ' ' + sNam2 + ' @' + sTemp, 7, true);
oFs.DeleteFile(sTemp);


ファイル圧縮.js は X-Finderのフォルダにscriptフォルダを作成しそこに保存しておけばOK。
関連記事

コメントの投稿

管理者にだけ表示を許可する

注意事項
基本的にこのブログはブログ主の備忘録です。

ブログの内容にはブログ主の主観や時には正確でない情報が含まれていることもあります。書いてある内容がすべての環境にあてはまることを保証するものでもありません。
また過去の記事の情報はそれが参照された時点では既に陳腐化していることもあります。

その辺をご理解の上で当ブログ内に書いてあることを試す場合は自己責任でお願いします。

万一何らかの損害が生じても責任は持てませんのであしからず!

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
ブログ内検索
カラーコードチェッカ
カラーコードの確認
入力例) #ffffff | blue
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文: