Я пытаюсь найти способ сделать действие, к которому можно выполнить из контекстного меню, "Извлечение <folder_same_as_file_name>
"действие по умолчанию при двойном щелчке по файлу вместо того, чтобы просто запуститься с 7 zip. Существует ли простой способ сделать это?
В альтернативе я заключаю, что мог попробовать передающие параметры в следующее:
7z x <filename> -o<filename>
Но я не уверен, как настроить это (как передать параметр имени файла, и я могу сделать это непосредственно, или я должен буду записать пакетный файл вместо этого и передать имя файла ему? Последний я нахожу раздраженно неизящными, но безотносительно работ.
К сожалению, метод пакетной программы afrazier не будет работать; Windows не обрабатывает открытие нескольких файлов как этот. Когда Вы пытаетесь открыть несколько файлов с программой, Windows не открывает единственный экземпляр программы и передает файлы как несколько аргументов тому одному экземпляру. Вместо этого Windows открывает много экземпляров программы (как много экземпляров, поскольку существуют файлы), передавая один файл каждому экземпляру. Было бы хорошо, если Вы могли бы просто использовать % * и передать набор файлов к единственному .bat и иметь это, .bat выполняют цикл, обрабатывающий каждый файл по одному, но к сожалению можно только использовать %1 при установке этих видов действий в реестре.
Кто-то с некоторым временем на их руках мог записать программу, которая использует взаимоисключающий объект проверить, существует ли другой экземпляр, уже работающий, и если существует, для передачи это - файл к тому экземпляру, и затем закройтесь, где исходный экземпляр поместит тот файл в очередь и доберется до него, после того как это сделало обработку ее собственного файла. пакет мог добиться цели использование tasklist
и find
Также, но это не так хорошо из решения как взаимное исключение.
Так или иначе попробуйте это, чтобы Ваше значение реестра команды извлечения получило правильное имя папки:
"\path\to\7z.exe" x "%1" -o* -aou
Это создаст новую папку в том же каталоге как исходный архив с тем же именем как исходный архив (без расширения файла).
Кроме того, я добавил -aou
переключитесь для автоматического предотвращения конфликтов имени файла (7z, добавит число в конец файла, вместо этого предлагающего Вам, хотите ли Вы перезаписать или безотносительно).
Параметры передачи как это:
7z x "%1" -o"%1.d"
Я вспоминаю жалобы на слушание на Windows 7, не позволяющий непосредственно отредактировать действия файла. Я не знаю, верно ли это или не..., но если это, сохраните следующее как a *.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\""
Установка ExtractNow. Можно настроить его, чтобы сделать точно, что Вы хотите.
Ручная модификация реестра следующим образом...
Запустить 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\7-Zip\7zG.exe x "%1" -o* -aou
(Вам, возможно, придется скорректировать путь),
Благодаря Justin Roettger для указания на корректную переменную имени, необходимую для этого.
Это должно быть этим. Теперь 7z файлы извлечены к папке с их собственным именем двойным щелчком. Для других расширений как .rar и .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 %*
Все модификации реестра не тестируются из памяти, но должны быть корректными.