7-zip & Windows 7: сделать "извлечь в" по умолчанию на двойной щелчок

Я пытаюсь найти способ сделать действие, которое вы можете выполнить из контекстного меню " извлечь в <folder_same_as_file_name>" действие по умолчанию при двойном щелчке файла вместо простого запуска 7-zip. Есть ли простой способ сделать это?

в качестве альтернативы, я полагаю, я мог бы попробовать передать параметры в следующее:

7z x <filename> -o<filename>

но я не уверен, как это настроить (как передать параметр filename, и могу ли я сделать это напрямую или мне придется писать пакетный файл вместо этого и передать ему имя файла? Последний я нахожу раздражающе unelegant, но все работает.

16
задан studiohack
25.12.2022 14:32 Количество просмотров материала 3255
Распечатать страницу

6 ответов

к сожалению, метод пакетной программы афразье не будет работать; Windows не обрабатывает открытие нескольких файлов, как это. При попытке открыть несколько файлов с помощью программы, Windows не открывает один экземпляр программы и передать файлы в качестве нескольких аргументов для этого одного экземпляра. Вместо этого Windows открывает множество экземпляров программы (столько экземпляров, сколько файлов), передавая по одному файлу каждому экземпляру. Было бы неплохо, если бы вы могли просто использовать %* и передать кучу файлов в один .летучая мышь, и что .bat запускает цикл обработки каждого файла по одному, но, к сожалению, %1 можно использовать только при настройке этих действий в реестре.

кто-то с некоторого времени на руках может написать программу, которая использует объект мьютекса, чтобы проверить, есть ли другой экземпляр уже работает, и если есть, чтобы передать его файл к этому экземпляру, а затем закрыть, whereon исходный экземпляр поставит этот файл в очередь и добраться до него, как только это будет сделано обработка собственного файла. партия может сделать трюк с помощью tasklist и find тоже, но это не такое хорошее решение, как мьютекс.

во всяком случае, попробуйте это для вашего значения реестра команды извлечения, чтобы получить правильное имя папки:

"\path\toz.exe" x "%1" -o* -aou

это создаст новую папку в том же каталоге, что и исходный архив с тем же именем, что и исходный архив (без расширения файла).

кроме того, я добавил -aou автоматически избегать конфликтов имен файлов (7z добавит номер в конец файла, а не предложит вам, хотите ли вы перезаписать или что-то еще).

4
отвечен Justin Roettger 2022-12-26 22:20

эта тема стала немного запутанной из-за противоречивых ответов (мне потребовалось довольно много времени, чтобы выяснить, какое решение было правильным), поэтому я подумал, что было бы неплохо обобщить результаты сообщений афразье и Джастина Роеттгера в сочетании с моим собственным опытом:

  1. запустить regedit от имени администратора
  2. открыть HKEY_CLASSES_ROOT-Zip.7z
  3. под этим ключом разверните Shell подраздел
  4. установить (Default) значение string extract
  5. создать новый подраздел с именем extract
  6. установить (Default) значение extract ключ Extract to Folder
  7. создать новый подраздел в разделе extract имени command
  8. установить (Default) стоимостью command ключ:

C:\ProgramFiles-ZipzG.exe x "%1" -o*

(возможно, вам придется настроить это, чтобы соответствовать пути установки 7zip)

вместо 7z с-aou как Джастин Roettger предложил я в конечном итоге с помощью 7zG, потому что таким образом вы можете выбрать, чтобы перезаписать, если вам нравится так же, как извлечение с обычным контекстным меню.

вот именно! 7z файлы теперь извлекаются в папку с их собственным именем двойным щелчком мыши. Для других расширений, как .Рар а .zip вы должны повторить эти шаги для по ключи. (т. е. HKEY_CLASSES_ROOT\7-Zip.RAR и HKEY_CLASSES_ROOT\7-Zip.ZIP и так далее)

О и уточнить: он работает с несколькими файлы выбраны. Нет необходимости пакетного файла.

10
отвечен haiggoh 2022-12-27 00:37

легкий путь

установить ExtractNow. Вы можете настроить его, чтобы делать именно то, что вы хотите.


трудный путь

ручная модификация реестра следующим образом...

  • Start regedit в качестве администратора

  • открыть HKCR\.7z и посмотрите на (Default) значение. Обратите внимание, что это такое (в моем случае, как пользователь PowerArchiver, это PASZIP)

  • перейти к разделу реестра в HKCR имя. (в моем случае HKCR\PASZIP)

  • под этим ключом разверните Shell подраздел

  • установить (Default) значение строки extract

  • создать новый подраздел с именем extract

  • установить (Default) значение extract ключ Extract to Folder

  • создать новый под-ключ под extract имени command

  • установить (Default) стоимостью command ключ

    C:\Program Files-ZipzG.exe x "%1" -o* -aou
    

    (возможно, вам придется настроить путь)

спасибо Джастину Реттгеру за указание правильной переменной имени, необходимой для этого.

вот и все. Теперь файлы 7z извлекаются в папку с собственным именем двойным щелчком мыши. Для других расширений, как .Рар а .zip вам нужно повторите эти действия для соответствующих клавиш.

если вы хотите внести изменения только в свою учетную запись пользователя, а не в систему, измените HKCU\Software\Classes вместо HKCR. 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

теперь следуйте инструкциям выше. На последнем шаге установите (Default) стоимостью command ключ C:\Path\To\File.bat %*

все изменения реестра не проверены из памяти, но должны быть правильными.

5
отвечен afrazier 2022-12-27 02:54

вот сценарий PowerShell, который я написал на основе ответа @haiggoh. Прежде чем запустить его, вам нужно открыть 7-zip, перейти к Tools->Options и связать 7-zip с нужными расширениями файлов. После этого, запустите следующий сценарий PowerShell (с правами администратора):

zInstallationFolder = 'C:\Program Files-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('', '"' + zInstallationFolder + 'zG.exe" x "%1" -o*')
}

конечно, убедитесь, что zInstallationFolder переменная содержит правильный путь к вашей 7-zip установке.

2
отвечен xx77aBs 2022-12-27 05:11

передать параметры следующим образом:

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

Я помню, слыша жалобы о Windows 7 не позволяет непосредственно редактировать действия файла. Я не знаю, правда это или нет... но если это так, Сохранить как *.reg файл и импортировать его.

Windows Registry Editor Version 5.00

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

[HKEY_CURRENT_USER\Software\Classes-Zip.7z\shell\extract\command]
@="7z.exe x \"%1\" -o\"%1.d\""
0
отвечен grawity 2022-12-27 07:28

здесь .reg-файл, который настраивает извлечение в папку как поведение по умолчанию при двойном щелчке файлов с одним из следующих расширений - 7z/CAB/GZ/GZIP/RAR/TAR/ZIP. Вы можете сделать это для других расширений файлов, используя тот же подход. Я предпочитаю поведение Windows по умолчанию для подключения ISO/VHD, поэтому я этого не менял, а 7-Zip поддерживает многие другие типы файлов, с которыми я обычно не сталкиваюсь, поэтому я не менял его для них.

вы можете отменить это, перейдя в 7-Zip Файловый менеджер, Инструменты, Параметры и изменить файловые ассоциации по желанию.

Я тестировал на Windows 10 x64 / 7-Zip 15.12 x64. Потому что он использует C:\Program файлы для пути к 7-Zip, вам определенно нужна x64 Windows + x64 7-Zip, но я тестировал только на Windows 10.

у вас будут те же параметры щелчка правой кнопкой мыши, что и раньше, это только изменяет то, что происходит при двойном щелчке, и только для этих семи типов файлов (опять же, вы можете сделать это для других типов файлов, используя то же самое подход.)

если уже есть папка с таким именем, она даст вам тот же 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-Zip.7z]
@="7z Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.7z\DefaultIcon]
@="C:\Program Files-Zipz.dll,0"
[HKEY_CLASSES_ROOT-Zip.7z\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.7z\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.7z\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.7z\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.7z\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.cab]
@="cab Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.cab\DefaultIcon]
@="C:\Program Files-Zipz.dll,7"
[HKEY_CLASSES_ROOT-Zip.cab\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.cab\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.cab\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.cab\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.cab\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gz]
@="gz Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gz\DefaultIcon]
@="C:\Program Files-Zipz.dll,14"
[HKEY_CLASSES_ROOT-Zip.gz\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.gz\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.gz\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gz\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gz\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gzip]
@="gzip Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gzip\DefaultIcon]
@="C:\Program Files-Zipz.dll,14"
[HKEY_CLASSES_ROOT-Zip.gzip\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.gzip\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.gzip\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gzip\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.gzip\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.rar]
@="rar Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.rar\DefaultIcon]
@="C:\Program Files-Zipz.dll,3"
[HKEY_CLASSES_ROOT-Zip.rar\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.rar\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.rar\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.rar\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.rar\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.tar]
@="tar Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.tar\DefaultIcon]
@="C:\Program Files-Zipz.dll,13"
[HKEY_CLASSES_ROOT-Zip.tar\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.tar\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.tar\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.tar\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.tar\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.zip]
@="zip Archive"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.zip\DefaultIcon]
@="C:\Program Files-Zipz.dll,1"
[HKEY_CLASSES_ROOT-Zip.zip\shell]
@="extract"
[HKEY_CLASSES_ROOT-Zip.zip\shell\extract]
@="Extract to Folder"
[HKEY_CLASSES_ROOT-Zip.zip\shell\extract\command]
@="\"C:\Program Files-ZipzG.exe\" x \"%1\" -o*"
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.zip\shell\open]
@=""
[HKEY_CURRENT_USER\SOFTWARE\Classes-Zip.zip\shell\open\command]
@="\"C:\Program Files-ZipzFM.exe\" \"%1\""
0
отвечен Craig 2022-12-27 09:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх