はじめに
前回の投稿で7zipを用いてファイルをダブルクリックのみで展開 (解凍) する方法について紹介した。ただ、以前紹介した方法ではファイルの展開はできても、展開後にできたファイルは手動で開かないといけなかった。
そこで、今回は展開されたファイルも自動で開けるような設定を模索していく。
↑前回の記事
手順
今回使用するのは
- 7zip
- レジストリエディタ
- テキストエディタ (batファイルが作成できればなんでも良い)
の三つです。
前回に比べてテキストエディタが増えていますが、今回はこれを使って自動化する簡単なコードを書いていきます。
7zipの設定やレジストリエディタの使い方は前回の投稿を参考にしてください。
zipファイルのダブルクリックがなされた際に、7zipを用いて展開->エクスプローラーを使ってファイルを展開という手順が踏めればよいので、テキストエディタに以下のように書いて保存し、拡張子を.bat形式へと変更します。
@echo off
if not "%~0"=="%~dp0.\%~nx0" (
start /min cmd /c,"%~dp0.\%~nx0" %*
exit
)
"C:\Program Files\7-Zip\7zG.exe" x "%~1" -aos -o*
explorer "%~dpn1"
最初のif not
の節は展開中にコマンドプロンプトを最小化して起動するために記述しています。条件として、batファイルを開いたのがほかのプログラムであるかどうかを判断し、ほかのプログラムがbatファイルを開いたのであれば、2行目の処理に移り、引数を保持したままコマンドプロンプトを最小化して起動しなおします。
一方、batファイル自身が開いたのであれば、処理を終了することで無限ループに陥るのを防いでいます。(参考元: Hatena Blog; 火蛾の深潭)
次いで、7zipでダブルクリックしたファイルを展開する行があり、ここでは-aos
オプションをつけることで、展開済みのファイルであれば上書き処理をしないようにしています。
これを外せば上書き処理の確認プロンプトが表示されるようになります。詳しくは7zipのヘルプを参照してください。
最後に展開したフォルダをエクスプローラーで表示する命令を置くことで、展開後にエクスプローラーでファイルを表示してくれます。
この作った.batファイルを適当なところに置いておきます。
私の場合はC:\Users\ユーザー名\
下に置いています。
これで下準備は完了したので、レジストリエディタを開き、コンピューター\HKEY_CLASSES_ROOT\7-Zip.zip\shell\open\command
に移動して規定をダブルクリックして、値のデータに"C:\Users\ユーザー名\autoExtraction.bat" "%1"
と入力し、タスクマネージャーからエクスプローラーを再起動すれば、ダブルクリックのみで7zipで展開、エクスプローラーで展開後のフォルダを自動で参照することができるようになっているはずです。対応したレジストリキーを同様に書き換えれば、他の拡張子も自動で展開、参照することができます。
まとめと改良点
今回、7zipを用いて、zipファイルを展開後エクスプローラーで表示する設定を行った。7zipでも標準搭載してくれるとありがたいが、、、
最初はレジストリをいじるだけでなんとか行えないかと試行錯誤していたが、どうにも私の技術力では無理そうだったのであきらめてbatファイルを実行することで実現した。
ただ、batファイルをいじるのは初めてだったので、引数や、拡張子の取り出しなど初歩的なことを学ぶ機会となった。