前書き#
以前は常に Bandizip を使用していました。このソフトウェアの「自動解凍」機能がとても気に入っています。この機能は「フォルダに解凍」機能とは完全に異なります。
公式ウェブサイトの説明
圧縮ファイル内にファイルが 1 つしかない場合、現在のフォルダに解凍されます。
圧縮ファイル内のファイルがすべて同じフォルダにある場合、現在のフォルダに解凍されます。
それ以外の場合、ファイル名のフォルダに解凍されます。
Unix で圧縮されたファイルは通常、1 つのフォルダにバンドルされています。これらのファイルを「ファイル名のフォルダ」に解凍すると、同じ名前の複数のフォルダが表示されて非常に不便です。
このような場合、自動解凍機能を使用すると便利です。Bandizip は、ファイルを現在のフォルダに解凍するか「ファイル名のフォルダ」に解凍するかを自動的に判断します。
今日、突然 Bandizip をアンインストールし、憧れの 7-Zip をインストールしました。Windows 11 で右クリックメニューで「フォルダに解凍」を使用するのは非常に面倒です。7-Zip は Windows 11 の新しい右クリックメニューに対応していないため、右クリックで解凍するには 2 つ、3 つのメニューをたどる必要があります。また、「フォルダに解凍」などの不器用な選択肢しかありません。圧縮ファイルを直接開いてツールバーの「抽出」を使用すると、圧縮ファイル内のファイルがすべて 1 つのディレクトリにある場合、圧縮ファイルがあるディレクトリに直接抽出されてしまい、ごちゃごちゃになります。
そこで、ショートカット方法を探し始めました。まず、Windows 11 の新しい右クリックメニューに対応した Nanazip を見つけましたが、二次開発は避けたいと思いました。次に、AutoHotkey を使用してCtrl + Alt +左クリック
で圧縮ファイルを選択し、解凍する方法があることを検索しました。ネット上のスクリプトを試してみましたが、うまくいきませんでした。スクリプトを少し変更して試してみましたが、結局うまくいきませんでした。
最終的には、妥協することにし、やはり AutoHotkey を使用することにしましたが、アプローチを変えました。
アプローチ#
-
圧縮ファイルを選択する
-
AutoHotkey を使用して
Ctrl + C
コマンドを送信し、圧縮ファイルのパスをクリップボードにコピーするWindows でファイルを「コピー」すると、ファイルのパスがクリップボードに保存され、CF_HDROP というファイルリストのタイプで保存されます。実際にファイルをコピーするのは「貼り付け」するときです。
CF_HDROP: ファイルリストを識別するための
HDROP
タイプのハンドル。アプリケーションは、ハンドルをDragQueryFile
関数に渡すことで、ファイルに関する情報を取得できます。 -
クリップボードから圧縮ファイルのパスを読み取り、変数
SelectedFile
に割り当てる -
変数
SelectedFile
から.
以降の拡張子を削除し、変数dirAndFileName
に割り当てる -
コマンド
7z x "%SelectedFile%" -o"%dirAndFileName%" -y
を実行して、7-Zip を呼び出し、圧縮ファイルを解凍する
スクリプトの内容#
!x::
; ファイルをコピーする
SendInput, ^c
Sleep 50
; クリップボードから選択したファイルのパスを読み取る
SelectedFile := Clipboard
; ファイルと同じ名前のフォルダを作成する変数
dirAndFileName := SubStr(SelectedFile, 1, InStr(SelectedFile, ".", 0, -1) - 1)
; ファイルと同じ名前のフォルダに解凍する
RunWait, 7z x "%SelectedFile%" -o"%dirAndFileName%" -y
return
使用方法#
スクリプトの内容を AutoHotkey ファイルとして保存し、実行します。圧縮ファイルを選択し、Alt + X
キーを使用して直接圧縮ファイルを解凍できます。
最後に#
しかし、やはり Bandizip の「自動解凍」機能には及びません(笑)(使えれば問題ありません、脳が抜けていなければ)