Hayashikawa

Hayashikawa

7-Zipを使用してAutoHotkeyで圧縮ファイルを簡単に解凍する

前書き#

以前は常に Bandizip を使用していました。このソフトウェアの「自動解凍」機能がとても気に入っています。この機能は「フォルダに解凍」機能とは完全に異なります。

公式ウェブサイトの説明

  • 圧縮ファイル内にファイルが 1 つしかない場合、現在のフォルダに解凍されます。

  • 圧縮ファイル内のファイルがすべて同じフォルダにある場合、現在のフォルダに解凍されます。

  • それ以外の場合、ファイル名のフォルダに解凍されます。

Unix で圧縮されたファイルは通常、1 つのフォルダにバンドルされています。これらのファイルを「ファイル名のフォルダ」に解凍すると、同じ名前の複数のフォルダが表示されて非常に不便です。

このような場合、自動解凍機能を使用すると便利です。Bandizip は、ファイルを現在のフォルダに解凍するか「ファイル名のフォルダ」に解凍するかを自動的に判断します。

今日、突然 Bandizip をアンインストールし、憧れの 7-Zip をインストールしました。Windows 11 で右クリックメニューで「フォルダに解凍」を使用するのは非常に面倒です。7-Zip は Windows 11 の新しい右クリックメニューに対応していないため、右クリックで解凍するには 2 つ、3 つのメニューをたどる必要があります。また、「フォルダに解凍」などの不器用な選択肢しかありません。圧縮ファイルを直接開いてツールバーの「抽出」を使用すると、圧縮ファイル内のファイルがすべて 1 つのディレクトリにある場合、圧縮ファイルがあるディレクトリに直接抽出されてしまい、ごちゃごちゃになります。

そこで、ショートカット方法を探し始めました。まず、Windows 11 の新しい右クリックメニューに対応した Nanazip を見つけましたが、二次開発は避けたいと思いました。次に、AutoHotkey を使用してCtrl + Alt +左クリックで圧縮ファイルを選択し、解凍する方法があることを検索しました。ネット上のスクリプトを試してみましたが、うまくいきませんでした。スクリプトを少し変更して試してみましたが、結局うまくいきませんでした。

最終的には、妥協することにし、やはり AutoHotkey を使用することにしましたが、アプローチを変えました。

アプローチ#

  1. 圧縮ファイルを選択する

  2. AutoHotkey を使用してCtrl + Cコマンドを送信し、圧縮ファイルのパスをクリップボードにコピーする

    Windows でファイルを「コピー」すると、ファイルのパスがクリップボードに保存され、CF_HDROP というファイルリストのタイプで保存されます。実際にファイルをコピーするのは「貼り付け」するときです。

    CF_HDROP: ファイルリストを識別するためのHDROPタイプのハンドル。アプリケーションは、ハンドルをDragQueryFile関数に渡すことで、ファイルに関する情報を取得できます。

  3. クリップボードから圧縮ファイルのパスを読み取り、変数SelectedFileに割り当てる

  4. 変数SelectedFileから.以降の拡張子を削除し、変数dirAndFileNameに割り当てる

  5. コマンド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 の「自動解凍」機能には及びません(笑)(使えれば問題ありません、脳が抜けていなければ)

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。