zipファイルをダブルクリックすると7-zipで展開したうえでフォルダを開くバッチファイル

実は最近まで、Zipファイルの解凍にLhaplusを使っていた自分。ただ、さすがに全くメンテナンスされてないし、脆弱性もあるらしいとのことで、7-zipを使うことにしました。
圧縮・解凍ソフト 7-Zip

ただ、7-zipはLhaplusと違って、標準でzipファイルをダブルクリックすると展開する機能が無いんですよね。調べてみると一応やり方はあるようなのですが、それも自動でエクスプローラーを表示してくれなかったり、レジストリをいじらないといけなかったり。
というわけで、ChatGPTを使って試行錯誤しながら、自動的に展開してエクスプローラを開くバッチファイルを作成しました。

@echo off
setlocal
set "zipfile=%~1"
set "unzipdir=%~dpn1"
"C:\Program Files\7-Zip\7zG.exe" x "%zipfile%" -o"%unzipdir%"
explorer "%unzipdir%"
timeout /t 1 /nobreak >nul
endlocal

“C:\Program Files\7-Zip\7zG.exe”の箇所は、実際に7zipを配置しているパスを指定してください。

使い方は下記のとおり(zipファイルを7-zipに関連付けてない場合の手順です)。

まず、上記のスクリプトを記載したバッチファイルを作成する。

適当なzipファイルを右クリックして、「別のプログラムを選択」を選択。

「PCアプリを選択する」を選択(Windows11の場合)

先ほど作成したBatファイルを選択して「開く」ボタンを選択

「常に使う」を選択

これで、zipファイルをダブルクリック(というより、実行)すると7-zipを使って同じ階層のフォルダに展開し、展開先のフォルダが開くようになります。
[timeout /t 1 /nobreak >nul]の行は必要なのかと思う人もいると思いますがこれが無いと展開先のフォルダが最前面にならないことがあるようです(やっていることは、ただたんに1秒間待つという処理です)。なぜこれが無いと最前面にならなくて、あると最前面になるのかはよく分かっていません…。

Zipファイルのアイコンを変更したい場合は、レジストリをいじってください(以下、やり方をChatGPTに聞いてみた結果)。

### 【手順1】アイコンにしたい画像ファイルを用意する
* `.ico`形式のアイコンファイルを用意します(例:`myzip.ico`)。
* 任意の場所(例:`C:\Icons\myzip.ico`)に保存します。

### 【手順2】ZIPファイルを関連付けしているアプリの確認
ZIPファイルがどのプログラムに関連付けられているかによって、レジストリの場所が変わります。
1. `.zip`ファイルを右クリック → **\[プロパティ]**
2. 「開くプログラム」が何かを確認(例:`エクスプローラー`や`7-Zip`など)

### 【手順3】レジストリエディタでアイコンを変更する
1. `Win + R`キー → 「**regedit**」と入力してレジストリエディタを起動
2. 次のキーに移動:
“`
HKEY_CLASSES_ROOT\.zip
“`

3. 右側の「(既定)」の値を確認(例:`CompressedFolder`など)
4. 次に、以下のキーへ移動:

“`
HKEY_CLASSES_ROOT\CompressedFolder\DefaultIcon
“`

※`CompressedFolder`の代わりに、さきほど確認した名前のキーに行きます

5. `DefaultIcon`キーがない場合は右クリック→「新規作成」→「キー」で作成
6. `(既定)`の値にアイコンのパスを設定:

“`
C:\Icons\myzip.ico
“`
7. レジストリエディタを閉じて、PCを再起動またはエクスプローラーを再起動

### 【手順4】エクスプローラーを再起動する(再起動せずに反映させる場合)
1. Ctrl + Shift + Esc でタスクマネージャーを開く
2. 「Windowsエクスプローラー」を探して右クリック →「再起動」

なお、すでにzipファイルを7-zipに関連付けている場合は、レジストリエディタの[HKEY_CLASSES_ROOT\7-Zip.zip\shell\open\command]を[“C:\Bat\unzip_and_open.bat” “%1”]というように変更するだけでいいです(この場合、zipファイルのアイコンは7-zipのアイコンになってます)

コメント

タイトルとURLをコピーしました