ファイル解凍 - X-Finderスクリプト 2011-03-10 (Thu) 22:04

最近怒濤のバージョンアップを続ける X-Finder。
気付けば バージョンは 11-7-28まで上がっている!(2011/03/10現在 但し11-7-28は人柱版)
因みに筆者はまだ 11-7-16を使っている。

更新履歴を見てみると…なんと 11-7-18から書庫スクリプトプラグインが使えるようになっている。
実際試してみていないのでよく分からないが X-Finderで書庫ファイルが簡単に扱えてしまうのか?
バージョンアップがもう少し落ち着いてきたら導入していろいろ試してみよう。((o(´∀`)o))ワクワク

それはそれはさておき、以前に X-Finderでファイルを圧縮するスクリプトを書いたので、今回は
それを解凍するスクリプトもついでに書いておこう。
(書庫スクリプトプラグインを使えば無用の長物となってしまうのかもしれないが…)

ファイルを圧縮するスクリプトでは、7-ZipのHPから「7-Zip コマンドラインバージョン」をダウンロードして使っていた。
今回もこれを使ってみたのだが、ヘルプファイルに載っている、解凍に対応した形式の圧縮ファイルが解凍できない。
いろいろ試行錯誤してみたが、どうしても解凍できない。
試しに「7-Zip 32ビットWindows用」の方をダウンロードしてみたところ、コマンドラインで使える実行ファイルも入っている。
これを使ってみたところ…うまくいく!!! 「rar」も「lzh」もちゃんと解凍される!

7-Zip コマンドラインバージョンの readme.txt

- Supported formats:
- Packing / unpacking: 7z, xz, ZIP, GZIP, BZIP2 and TAR
- Unpacking only: Z, lzma


7-Zip 32ビットWindows用の readme.txt

- Supported formats:
- Packing / unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM.
- Unpacking only: ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA,
MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR and Z.


各々の説明文を見比べてみるとこのようになっている。
おやおや?「7-Zip コマンドラインバージョン」の方はヘルプファイルに載ってる対応形式と違ってますけど!?
おかしいなぁと思っていたら、両方ともヘルプファイルは全く同じものだった…まぎらわしいなぁ(´・ω・`)y-~~~
いやいや。ただでこんな便利なツール使わせてもらっててそんな文句言ったら罰があたってしまうぞ。俺!

そんな訳で「7-Zip 32ビットWindows用」を使用して出来上がったスクリプトがこちら。

指定先に解凍.js  (下の内容をこのファイル名でX-Finderのscriptフォルダに保存しておけばOK。)
var oSh = new ActiveXObject("WScript.Shell");
var oFs = new ActiveXObject("Scripting.FileSystemObject");
var cSel = WScript.Col(WScript.Env('Selected'));
var sPgpath = WScript.Env('Arg1');
var sPara = WScript.Env('Arg2');
var sOther = WScript.Env('Arg3');

oSh.CurrentDirectory = oFs.GetParentFolderName(cSel.Item(0));
for(var i = 0; i < cSel.Count; i++){
oSh.Run(sPgpath + ' e "' + cSel.Item(i) +
'" -o' + sOther + ' ' + sPara, 7, true);
}

今回も環境変数を使ってパラメタを渡すようになっている。
Arg1 : 7z.exeの実行ファイルのパス ex) "C:\\Program Files\\7z\\7z.exe"
Arg2 : 解凍先に同名ファイルが存在する場合の処理
1) -aoa 上書き
2) -aos 解凍をスキップ
3) -aou 解凍するファイル名を変更 ex) file.txt → file_1.txt
4) -aot 解凍先のファイル名を変更 ex) file.txt → file_1.txt
Arg3 : 解凍先のパス

ランチャの設定例
反対側のパス(タブ)に解凍する場合(同名ファイルがある場合は解凍先のファイル名を変更
パス
Set:Arg1="C:\\Program Files\\7z\\7z.exe"
Set:Arg2=-aot
Set:Arg3="%Other%"
Include:JScript 指定先に解凍.js
拡張
*.zip;*.7z;*.rar;*.lzh;*.cab
動作
パスにフォーカス項目を渡して実行
送る動作
標準

圧縮ファイルと同じフォルダに解凍する場合(同名ファイルがある場合は上書き
パス
Set:Arg1="C:\\Program Files\\7z\\7z.exe"
Set:Arg2=-aoa
Set:Arg3=".\\"
Include:JScript 指定先に解凍.js
拡張
*.zip;*.7z;*.rar;*.lzh;*.cab
動作
パスにフォーカス項目を渡して実行
送る動作
標準


ここまで書いといて何なのだが、この程度のことはわざわざスクリプトを書くまでもないような気もする。
例えば、反対側のパス(タブ)に解凍する場合(同名ファイルがある場合は解凍先のファイル名を変更)は、
パス
1:Foreach: "D:\Tools\7z\7z.exe" e "%Variable%" -o"%Other%" -aot
拡張
*.zip;*.7z;*.rar;*.lzh;*.cab
動作
パスにフォーカス項目を渡して実行
バックグラウンド
送る動作
標準
こんな感じでもOK。
ただこの場合、7z.exeの実行時にコマンドプロンプトのウィンドウが表示されてしまう。
これを回避するには 7z.exeのショートカットを同じフォルダに7zという名前で作成し、そのプロパティで「実行時の大きさ」を「最小化」にしておく。その上で上記のパスの部分で「7z.exe」→「7z.lnk」にすればよい。
xf_sample110310.jpg

どちらがいいかは、まぁ好みの問題ということで…


関連記事

コメントの投稿

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

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

ブログの内容にはブログ主の主観や時には正確でない情報が含まれていることもあります。書いてある内容がすべての環境にあてはまることを保証するものでもありません。

また、過去の記事は現時点で既に陳腐化していることもあります。

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

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
09 | 2017/10 | 11
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
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム

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