web-dev-qa-db-ja.com

7-ZipとWindows 7:ダブルクリック時に「<フォルダー>に抽出」をデフォルトにする

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

別の方法では、次のものにパラメータを渡してみることができます:

7z x <filename> -o<filename>

しかし、これを設定する方法(ファイル名パラメーターを渡す方法、およびこれを直接行うことはできますか、代わりにバッチファイルを作成してファイル名を渡さなければなりませんか?)はわかりません。何でも動作します。

16
schodge

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

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

とにかく、正しいフォルダー名を取得するには、extractコマンドのレジストリ値にこれを試してください。

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

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

また、-aouスイッチを使用して、ファイル名の競合を自動的に回避します(7zは、上書きするかどうかを尋ねる代わりに、ファイルの末尾に番号を追加します)。

4
Justin Roettger

このスレッドは、矛盾する答えのために少し混乱しました(どちらが正しい解決策であるかを理解するのにかなりの時間を要しました)。経験:

  1. 管理者としてregeditを開始します
  2. 開いた HKEY_CLASSES_ROOT\7-Zip.7z
  3. そのキーの下で、Shellサブキーを展開します
  4. をセットする (Default)値を文字列extract
  5. extractという名前の新しいサブキーを作成します
  6. をセットする (Default)へのextractキーの値Extract 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など)

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

12
haiggoh

簡単な方法

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


難しい方法

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

  • 管理者としてregeditを起動します

  • HKCR\.7zを開き、(Default)の値を確認します。それが何であるかをメモしてください(私の場合、PowerArchiverユーザーとしてはPASZIPです)。

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

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

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

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

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

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

  • commandキーの(Default)値を

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

    (パスを調整する必要があるかもしれません)

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

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

システム全体ではなくユーザーアカウントのみを変更する場合は、HKCRではなくHKCU\Software\Classesを変更します。 HKCRは、HKLM\Software\ClassesHKCU\Software\Classesの和集合である仮想キーであり、アカウント内のデータ(HKCU)がシステム全体のデータ(HKLM)をオーバーライドします。通常、regeditを管理者として実行すると、HKCRを変更すると、HKLMのシステム全体のデータが変更されます。


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

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

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

次に、上記の手順に従います。最後のステップで、commandキーの(Default)値をC:\Path\To\File.bat %*に設定します

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

5
afrazier

これが、@ 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インストールへの正しいパスが含まれています。

2
xx77aBs

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

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
user1686

次の.regファイルは、7z/CAB/GZ/GZIP/RAR/TAR/Zipのいずれかの拡張子が付いたファイルをダブルクリックしたときのデフォルトの動作としてExtract to folderを構成します。同じアプローチを使用して、他のファイル拡張子に対しても実行できます。 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\""
0
Craig