7-zipおよびWindows 7:ダブルクリックで「<folder>に抽出」をデフォルトにする


15

コンテキストメニューから実行できるアクションを作成する方法を見つけようとしています<folder_same_as_file_name>。7-zipを起動するのではなく、ファイルをダブルクリックすると、デフォルトのアクション「Extract to 」になります。これを行う簡単な方法はありますか?

別の方法では、次のパラメーターを渡すことができます。

7z x <filename> -o<filename>

しかし、私はこれを設定する方法がわかりません(ファイル名パラメータを渡す方法、これを直接行うことができますか、代わりにバッチファイルを書いてファイル名を渡す必要がありますか?後者は苛立たしく違法ですが、何でも動作します。

回答:


4

残念ながら、afrazierのバッチプログラムメソッドは機能しません。Windowsは、そのような複数のファイルを開くことを処理しません。プログラムで複数のファイルを開こうとすると、Windowsはプログラムの単一のインスタンスを開かず、その1つのインスタンスに複数の引数としてファイルを渡しません。代わりに、Windowsはプログラムの多くのインスタンス(ファイルと同じ数のインスタンス)を開き、各インスタンスに1つのファイルを渡します。単に%*を使用し、多数のファイルを単一の.batに渡して、各ファイルを1つずつ処理するループを.batに実行させることができれば便利ですが、残念ながら、これらを設定するときは%1しか使用できませんレジストリ内の種類のアクション。

しばらく時間があれば、ミューテックスオブジェクトを使用して、既に実行中の別のインスタンスがあるかどうかを確認し、存在する場合はそのインスタンスにファイルを渡して閉じ、元のインスタンスがそのファイルを置くプログラムを作成できます独自のファイルの処理が完了すると、キューに入れられます。バッチでもtasklistand を使用してトリックを実行できますが、findmutexほどの解決策ではありません。

とにかく、適切なフォルダ名を取得するために、抽出コマンドのレジストリ値に対してこれを試してください:

"\path\to\7z.exe" x "%1" -o* -aou

これにより、ソースアーカイブと同じディレクトリに、ソースアーカイブと同じ名前の新しいフォルダーが作成されます(ファイル拡張子なし)。

また、-aouファイル名の競合を自動的に回避するスイッチを追加しました(7zはファイルの末尾に番号を追加し、代わりに上書きするかどうかを確認するプロンプトを表示します)。


-o*アーカイブに複数のファイルがある場合にのみ、行う方法がありますか?同様に、アーカイブにファイルまたはフォルダーが1つしかない場合、現在のディレクトリに抽出することはできますか?
NightExcessive

されているWindows 10ではデフォルト"C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aouこれだけ7Zに7zFMを変更"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk

12

このスレッドは、矛盾した答えのために少し混乱しました(正しい解決策を見つけるのにかなりの時間がかかりました)。経験:

  1. 管理者としてregeditを開始します
  2. 開いた HKEY_CLASSES_ROOT\7-Zip.7z
  3. そのキーの下で、Shellサブキーを展開します
  4. (Default)値を文字列に設定しますextract
  5. という名前の新しいサブキーを作成します extract
  6. キーの(Default)値を設定しますextractExtract to Folder
  7. extract名前付きの下に新しいサブキーを作成しますcommand
  8. キーの(Default)値を次のように設定しますcommand

C:\Program Files\7-Zip\7zG.exe x "%1" -o*

(7-Zipインストールのパスと一致するように調整する必要がある場合があります)

Justin Roettgerのような-aouを使用した7zの代わりに、7zGを使用することを提案しました。これにより、通常のコンテキストメニューで抽出したい場合に上書きすることを選択できます。

それでおしまい!7zファイルは、ダブルクリックで独自の名前のフォルダーに抽出されるようになりました。.rarや.zipなどの他の拡張子については、対応するキーに対してこれらの手順を繰り返す必要があります。(つまり、HKEY_CLASSES_ROOT \ 7-Zip.rarおよびHKEY_CLASSES_ROOT \ 7-Zip.zipなど)

ああ、明確にするために:複数のファイルを選択しても同様に機能します。バッチファイルは必要ありません。


1
そのレジストリパスが表示されません。64ビット7zipのWindows 8を使用しています。
フィリップウェイ14年

この投稿以降、たくさんの変更がありましたが、それでもうまくいきます...私にとっては、7-Zip.7zではなく7z_auto_fileの下にありました。私がしたことは、既存の「コマンド」を「C:\Program Files\7-Zip\7zG.exe x "%1" -o*出来上がり」に変更することだけでした。
neokio

Windows 10では、(Tools -> Options...メニューを介して)7-Zipファイルマネージャーで少なくとも1つのファイルを7-Zipに関連付けるまで、パスも表示されませんでした。
クリスノレット

なぜこれがWindows 10で動作しなくなったのか誰でも知っていますか?パスは同じように見えますが、すぐに閉じる黒いコンソールウィンドウが表示され、何も抽出されません。このスレッドのすべてのメソッドを試しました。
ライアンワイス

5

簡単な方法

ExtractNowをインストールします。希望どおりに実行するように構成できます。


難しい方法

次のようにレジストリを手動で変更します...

  • regedit管理者として開始

  • 値を開いHKCR\.7zて見てください(Default)。それが何であるかに注意してください(私の場合、PowerArchiverユーザーとしてはPASZIP

  • HKCRその名前のレジストリキーに移動します。(私の場合HKCR\PASZIP

  • そのキーの下で、Shellサブキーを展開します

  • (Default)値を文字列に設定しますextract

  • という名前の新しいサブキーを作成します extract

  • キーの(Default)値を設定しますextractExtract to Folder

  • extract名前付きの下に新しいサブキーを作成しますcommand

  • キーの(Default)値を設定しますcommand

    C:\Program Files\7-Zip\7zG.exe x "%1" -o* -aou
    

    (パスを調整する必要がある場合があります)

これに必要な正しい名前変数を指摘してくれたJustin Roettgerに感謝します。

それであるはずです。これで、7zファイルがダブルクリックで独自の名前のフォルダーに抽出されます。.rarや.zipなどの他の拡張子については、対応するキーに対してこの手順を繰り返す必要があります。

システム全体ではHKCU\Software\Classesなくユーザーアカウントでのみ変更を行う場合は、の代わりに変更しますHKCRHKCRは、アカウントのデータ(HKCU)が結合した仮想キーでHKLM\Software\ClassesありHKCU\Software\Classes、システム全体のデータ(HKLM)を上書きします。通常、管理者としてregeditを実行すると、HKCRを変更するとHKLMのシステム全体のデータが変更されます。


複数のファイルを抽出する

もちろん、複数のファイルを選択している場合、これは機能しません。これを機能させるには、次のバッチファイルを作成する必要があります。

@echo off
:top
if "%1"=="" goto :EOF
7z.exe x "%1" -o"%~dpn1"
shift
goto top

さて、上記の指示に従ってください。最後のステップ(Default)で、commandキーの値をC:\Path\To\File.bat %*

レジストリの変更はすべてメモリからテストされていませんが、正しいはずです。


%~dpn1ファイルの関連付けで機能しますか?(Windows XPにはありません。また、x拡張機能を忘れていました。)
user1686

1
@grawity:x出力フォルダー名に必要ありません。それが機能するように...それは良い質問です。アドレスに編集します
...-afrazier

うーん、良い点。
user1686

とても近いですが、まだまだありません。提供された難易度と粗さの両方のコードで遊んだ後、私は伝えることができる"C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" 実行から利益を得ていなかったので、デフォルトのキー値が設定されcmd.exeており、7-zipのデフォルトのオープンはそれを気にしませんでした。ただし、これは%~dpn1zipファイルと同じフォルダーに解凍するだけです。\"%1.d\"\ filename.zip.d \ zipファイルと同じフォルダにサブディレクトリ、それは近いですのでが得られますが、拡張子を剥ぎ取りません。私はこの2つのハイブリッドを試しましたが、運はありません。他の提案はありますか?
-Schodge

おそらく、バッチファイルを使用する必要があります。
afrazier

2

@haiggohの回答に基づいて作成したPowerShellスクリプトを次に示します。実行する前に、7-zipを開き、[ツール]-> [オプション]に移動して、7-zipを目的のファイル拡張子に関連付ける必要があります。その後、次のPowerShellスクリプトを(管理者権限で)実行します。

$7zInstallationFolder = 'C:\Program Files\7-Zip'
$reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::ClassesRoot, [Microsoft.Win32.RegistryView]::Default)
$subKeys = $reg.GetSubKeyNames() | where { $_ -match '7-Zip.' }
foreach ($keyName in $subKeys) {
    $key = $reg.OpenSubKey($keyName + '\shell\open\command', $true)
    $key.SetValue('', '"' + $7zInstallationFolder + '\7zG.exe" x "%1" -o*')
}

もちろん、$7zInstallationFolder変数に7-zipインストールへの正しいパスが含まれていることを確認してください。


元に戻すには?アンインストールと再インストールが機能しませんでした
Lombas

@Lombasは、7-zipをそれらの拡張機能に再度関連付けようとします。機能しない場合は、レジストリキーを削除して、もう一度やり直してください。
xx77aBs

7-zipを再び拡張機能に関連付けました。どうもありがとうございました!
ロンバス

0

このようなパラメーターを渡します。

7z x "%1" -o"%1.d"

Windows 7でファイルアクションを直接編集できないという苦情を聞いたことを思い出します。これが本当かどうかはわかりませんが…もしそうなら、以下を*.regファイルとして保存してインポートしてください。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\7-Zip.7z\shell\extract]
@="Extract to folder"

[HKEY_CURRENT_USER\Software\Classes\7-Zip.7z\shell\extract\command]
@="7z.exe x \"%1\" -o\"%1.d\""

0

7z / CAB / GZ / GZIP / RAR / TAR / ZIPの拡張子を持つファイルをダブルクリックしたときのデフォルトの動作として、フォルダへの抽出を設定する.regファイルがあります。同じ方法を使用して、他のファイル拡張子に対しても実行できます。私はISO / VHDマウントのWindowsのデフォルトの動作を好むので、それを変更しませんでした。また、7-Zipは、私が一般に遭遇しない他の多くのファイルタイプをサポートします。

これを元に戻すには、7-Zipファイルマネージャー、ツール、オプションを選択し、必要に応じてファイルの関連付けを変更します。

Windows 10 x64 / 7-Zip 15.12 x64でテストしました。7-ZipへのパスにC:\ Program Filesを使用するため、x64 Windows + x64 7-Zipが必ず必要ですが、Windows 10でのみテストしました。

以前と同じ右クリックオプションがありますが、これはダブルクリックしたときの動作のみを変更し、これら7つのファイルタイプに対してのみ変更されます(これも同じアプローチを使用して他のファイルタイプに対して実行できます)。

その名前のフォルダーが既に存在する場合は、通常と同じ7-Zipプロンプトが表示され、[すべてはい/はい/すべてを自動変更/いいえ/いいえ]のオプションがあります。

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Classes.7z]
@="7-Zip.7z"
[HKEY_CURRENT_USER\SOFTWARE\Classes.cab]
@="7-Zip.cab"
[HKEY_CURRENT_USER\SOFTWARE\Classes.gz]
@="7-Zip.gz"
[HKEY_CURRENT_USER\SOFTWARE\Classes.gzip]
@="7-Zip.gzip"
[HKEY_CURRENT_USER\SOFTWARE\Classes.rar]
@="7-Zip.rar"
[HKEY_CURRENT_USER\SOFTWARE\Classes.tar]
@="7-Zip.tar"
[HKEY_CURRENT_USER\SOFTWARE\Classes.zip]
@="7-Zip.zip"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.7z]
@="7z Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.7z\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,0"
[HKEY_CLASSES_ROOT\7-Zip.7z\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.7z\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.7z\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.7z\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.7z\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.cab]
@="cab Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.cab\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,7"
[HKEY_CLASSES_ROOT\7-Zip.cab\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.cab\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.cab\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.cab\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.cab\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gz]
@="gz Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gz\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,14"
[HKEY_CLASSES_ROOT\7-Zip.gz\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.gz\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.gz\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gz\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gz\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gzip]
@="gzip Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gzip\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,14"
[HKEY_CLASSES_ROOT\7-Zip.gzip\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.gzip\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.gzip\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gzip\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.gzip\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.rar]
@="rar Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.rar\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,3"
[HKEY_CLASSES_ROOT\7-Zip.rar\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.rar\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.rar\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.rar\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.rar\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.tar]
@="tar Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.tar\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,13"
[HKEY_CLASSES_ROOT\7-Zip.tar\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.tar\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.tar\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.tar\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.tar\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.zip]
@="zip Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.zip\DefaultIcon]
@="C:\Program Files\7-Zip\7z.dll,1"
[HKEY_CLASSES_ROOT\7-Zip.zip\shell]
@="extract"
[HKEY_CLASSES_ROOT\7-Zip.zip\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT\7-Zip.zip\shell\extract\command]
@="\"C:\Program Files\7-Zip\7zG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.zip\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\7-Zip.zip\shell\open\command]
@="\"C:\Program Files\7-Zip\7zFM.exe\" \"%1\""

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.