コンテキストメニューから実行できるアクションを実行する方法を見つけようとしています。「Extract to <folder_same_as_file_name>
"7-Zipを起動するのではなく、ファイルをダブルクリックしたときのデフォルトのアクションです。これを行う簡単な方法はありますか?
別の方法では、次のものにパラメータを渡してみることができます:
7z x <filename> -o<filename>
しかし、これを設定する方法(ファイル名パラメーターを渡す方法、およびこれを直接行うことはできますか、代わりにバッチファイルを作成してファイル名を渡さなければなりませんか?)はわかりません。何でも動作します。
残念ながら afrazierのバッチプログラムメソッド は機能しません。 Windowsはそのような複数のファイルを開くことを処理しません。プログラムで複数のファイルを開こうとすると、Windowsはプログラムの単一のインスタンスを開かず、その1つのインスタンスに複数の引数としてファイルを渡します。代わりに、Windowsはプログラムの多くのインスタンス(ファイルと同じ数のインスタンス)を開き、各インスタンスに1つのファイルを渡します。 %*だけを使用して一連のファイルを1つの.batに渡し、その.batで各ファイルを一度に1つずつ処理するループを実行できると便利ですが、残念ながらこれらを設定するときは%1しか使用できませんレジストリ内のアクションの種類。
手に時間がある人は、ミューテックスオブジェクトを使用して、既に実行中の別のインスタンスがあるかどうかを確認し、ある場合は、そのファイルをそのインスタンスに渡して閉じ、元のインスタンスがそのファイルを置くプログラムを書くことができます。キューに入れて、独自のファイルの処理が完了すると、そこに到達します。バッチでもtasklist
とfind
を使用してトリックを実行できますが、これはミューテックスほど良い解決策ではありません。
とにかく、正しいフォルダー名を取得するには、extractコマンドのレジストリ値にこれを試してください。
"\path\to\7z.exe" x "%1" -o* -aou
これにより、ソースアーカイブと同じディレクトリに、ソースアーカイブと同じ名前の新しいフォルダが作成されます(ファイル拡張子は削除されます)。
また、-aou
スイッチを使用して、ファイル名の競合を自動的に回避します(7zは、上書きするかどうかを尋ねる代わりに、ファイルの末尾に番号を追加します)。
このスレッドは、矛盾する答えのために少し混乱しました(どちらが正しい解決策であるかを理解するのにかなりの時間を要しました)。経験:
HKEY_CLASSES_ROOT\7-Zip.7z
Shell
サブキーを展開します(Default)
値を文字列extract
にextract
という名前の新しいサブキーを作成します(Default)
へのextract
キーの値Extract to Folder
extract
の下にcommand
という名前の新しいサブキーを作成します(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など)
ああ、明確にするために:複数のファイルを選択しても動作します。バッチファイルは必要ありません。
インストール 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\Classes
とHKCU\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 %*
に設定します
レジストリの変更はすべてメモリからテストされていませんが、正しいはずです。
これが、@ 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インストールへの正しいパスが含まれています。
次のようなパラメーターを渡します。
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\""
次の.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\""