当サイトはアフィリエイトプログラムによる収益を得ています。

ChromeでZIPをクリックしたら自動展開する仕組みを作った【Windows 11】

ChromeでZIPをクリックして自動展開するWindows 11の仕組み

ChromeでZIPをダウンロードしたあと、毎回右クリックして「すべて展開」を選ぶのが面倒になってきた。

最近はブログ用のスクリーンショットやCMD、設定ファイルをZIPで受け取ることが多い。ZIPの中身を見るだけならそのまま開けるけど、画像を順番に確認したり、同梱ファイルを使うCMDを動かしたりするなら全展開が必要になる。

そこで今回は、Chromeのダウンロード一覧からZIPをクリックしたら、自動で全展開して展開先フォルダーを開く仕組みを自分のWindows 11環境に作った。

完成したツールの配布記事ではなく、何を変えたのか・どこでつまずいたのかをまとめた記録になる。

スポンサーリンク

ZIPを開くだけでは不便だった

WindowsではZIPを普通のフォルダーに近い感覚で開ける。ただし、ZIPの中を参照している状態と、通常のフォルダーへすべて展開した状態は同じではない。

俺の環境で特に気になったのは次の2点だった。

  • 画像を開いても、同じZIP内の次の画像へ連続で移動しにくい
  • CMDを実行できても、同梱された別ファイルへアクセスできないことがある

画像を1枚ずつ確認するたびに閉じて次を開く。複数ファイルを使うCMDなら、先に「すべて展開」してから実行する。この数クリックがZIPを受け取るたびに発生していた。

Windows標準の展開方法自体は、Microsoftの「Zip and unzip files」でも案内されている。今回は標準機能を使うのをやめたのではなく、展開開始までの操作を短くした形だ。

クリックしたZIPだけを展開する

選んだZIPだけを展開してフォルダーを開く流れ

最初に、自動化したあとの動作を次のように決めた。

  1. ZIPと同じ場所に同名フォルダーを作る
  2. ZIP内のファイルをすべて展開する
  3. 展開が終わったら、そのフォルダーを自動で開く
  4. 元のZIPは削除せず残す
  5. 同名フォルダーがあれば (2)(3) を付けて上書きしない

ダウンロードが終わった瞬間に、すべてのZIPを自動展開する方法も考えた。ただ、これだと中身を見るつもりがないZIPまで勝手に展開される。

俺が欲しかったのは完全な監視型ではなく、Chromeで自分がクリックしたZIPだけを展開する動作だった。

同名フォルダーがあったときの上書き・別名保存・既存フォルダーを開くといった選択画面は、今回作った版には入れていない。現状は自動で (2)(3) を付ける動作にしている。

変更する場所はChromeではなくWindowsだった

Windows 11でzipの既定アプリがエクスプローラーの状態

最初はChromeの設定に「ZIPをクリックしたら自動展開」のような項目があると思って探していた。

実際に今回の環境で動作を変えるポイントになったのは、Windows側の .zip に割り当てられた既定アプリだった。Google Chromeヘルプにも、ダウンロード履歴のファイル名をクリックすると、そのファイル形式に設定されたパソコンの既定アプリで開くと案内されている。

参考:Google Chrome ヘルプ|ファイルをダウンロードする

変更前は、.zip の既定アプリがエクスプローラーになっていた。そのためChromeからZIPをクリックしても、自動展開ではなくZIPの中身をエクスプローラーで表示する動作になる。

つまり、Chromeを改造する必要はない。.zip の既定アプリを、自動展開用に作ったアプリへ切り替えればよかった。

作成中に3回つまずいた

ZIP自動展開の作成中に発生した3つの問題

やりたいことは単純に見えたけど、実際に組んでみるとWindows特有の部分で何度か止まった。

CMDの改行形式がLFだった

最初に作ったCMDを実行すると、powershell.exeell.exe として認識されるエラーが出た。

原因は、CMDがWindowsで一般的なCRLFではなくLF改行で作られていたことだった。CMDとPowerShellファイルの改行をCRLFへ揃えると、このエラーは解消した。

PowerShell 5.1で日本語が文字化けした

次は、スクリプト内の日本語が などを含む文字列へ崩れた。

俺の環境では、Windows PowerShell 5.1でBOMなしUTF-8の日本語を含むファイルを読ませたときに文字化けが起きていた。実行に使うCMDとPowerShellファイルから日本語を外し、英数字だけにして回避した。

ZIP Auto Extractが候補に出なかった

登録処理が終わっても、.zip の既定アプリ候補に自作した名前が表示されなかった。

zipの既定アプリ候補にWindows PowerShellが表示された画面

候補にはWindows PowerShellが見えていたが、ここでPowerShellを選ぶのは違う。ZIPを展開処理へ渡すのではなく、ZIP自体をPowerShellで開こうとする形になって失敗した。

最終的にはPC内で小さな専用EXEを作り、それを ZIP Auto Extract としてWindowsへ登録した。

ZIP Auto ExtractのWindows登録が完了したコマンド画面

登録完了後、既定アプリの画面を開き直すと ZIP Auto Extract が候補に出るようになった。

.zipの既定アプリを変更した

zipファイルの既定アプリにZIP Auto Extractを選ぶ画面

専用EXEをWindowsへ登録したあと、次の順番で切り替えた。

  1. Windows 11の「設定」を開く
  2. 「アプリ」から「既定のアプリ」へ進む
  3. .zip を検索する
  4. 現在の「エクスプローラー」をクリックする
  5. ZIP Auto Extract を選び「既定値を設定する」を押す

Microsoft公式にも、拡張子を検索してファイル形式ごとの既定アプリを変更する方法が掲載されている。

参考:Microsoft|Change Default Apps in Windows

この変更後は、エクスプローラーでZIPをダブルクリックした場合も ZIP Auto Extract が動く。Chromeだけに限定した設定ではない点には注意が必要だ。

ZIP確認がかなり楽になった

ZIPクリック後に自動展開されたフォルダーが開く完成イメージ

設定後は、Chromeのダウンロード一覧からZIPをクリックするだけで、同名フォルダーへ全展開され、そのフォルダーが自動で開くようになった。

画像は1枚目を開いたまま次へ移動できる。CMDやBATも、同じフォルダーへ展開された設定ファイルや画像へ普通にアクセスできるようになった。

元のZIPは残しているので、展開後に何かあってもやり直せる。同名フォルダーを上書きしない動作にしたことで、すでにあるファイルを壊す心配も減らせた。

かなり小さな改善だけど、ブログ素材のような複数ファイル入りZIPを頻繁に受け取る俺には効果が大きかった。

使うときの注意点

ZIP自動展開を使うときの安全上の注意

今回の仕組みは、ZIPを展開してフォルダーを開くだけ。中に入っているCMD・BAT・EXEを自動実行する動作は入れていない。

ただし、自動展開だから安全になるわけではない。出所が分からないZIPは開かず、展開後の実行ファイルにも注意する必要がある。

そのほか、現在の仕様では次の点も残っている。

  • 元ZIPを自動削除しないため、不要になったZIPと展開済みフォルダーは自分で整理する
  • パスワード付きZIPには対応していない
  • 同名フォルダーがある場合は自動で別名を付けるため、既存フォルダーをそのまま開く動作はない
  • 自作したセットアップZIP・ソースコード・EXEはこの記事では配布しない

最初はChrome側の設定だと思っていたけど、実際のポイントはWindowsの既定アプリだった。ZIPを開くたびに「すべて展開」を押しているなら、クリックしたときの処理そのものを変える方法もある。

コメント