К сожалению, метод пакетной программы afrazier не будет работать; Windows не справляется с открытием нескольких файлов. Когда вы пытаетесь открыть несколько файлов с помощью программы, Windows не открывает один экземпляр программы и не передает файлы в качестве нескольких аргументов этому одному экземпляру. Вместо этого Windows открывает много экземпляров программы (столько же, сколько существует файлов), передавая один файл каждому экземпляру. Было бы неплохо, если бы вы могли просто использовать% * и передать кучу файлов в один .bat, а этот .bat запустить цикл, обрабатывающий каждый файл по одному, но, к сожалению, вы можете использовать только% 1 при установке этих виды действий в реестре.
Кто-то, у кого есть время, может написать программу, которая использует объект мьютекса, чтобы проверить, запущен ли уже другой экземпляр, и, если есть, передать этот файл этому экземпляру и затем закрыть, после чего исходный экземпляр поместит этот файл. в очередь и доберитесь до нее, когда закончите обработку своего собственного файла. Пакет может сделать трюк, используя tasklist
и find
тоже, но это не такое хорошее решение, как мьютекс.
В любом случае, попробуйте это для своего значения реестра команды extract, чтобы получить правильное имя папки:
"\path\to\7z.exe" x "%1" -o* -aou
Это создаст новую папку в том же каталоге, что и исходный архив с тем же именем, что и исходный архив (без расширения файла).
Кроме того, я добавил -aou
переключатель, чтобы автоматически избегать конфликтов имен файлов (7z будет добавлять число в конец файла, вместо этого предлагая вам перезаписать или нет).
-o*
это, но только если в архиве более одного файла? Например, можно ли извлечь его из текущего каталога, если в архиве только один файл или папка?"C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aou
так изменить 7zFM только на 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
Эта тема стала немного запутанной из-за противоречивых ответов (мне потребовалось довольно много времени, чтобы выяснить, какое решение было правильным), поэтому я подумал, что было бы неплохо обобщить результаты постов afrazier и Джастина Реттгера в сочетании с моими собственными опыт:
HKEY_CLASSES_ROOT\7-Zip.7z
Shell
подраздел(Default)
значение в строкуextract
extract
(Default)
дляextract
ключа значениеExtract to Folder
extract
именемcommand
(Default)
значениеcommand
ключа:(возможно, вам придется настроить это в соответствии с путем установки 7-Zip)
Вместо 7z с -a, как вы предложили, Джастин Реттгер предложил использовать 7zG, потому что таким образом вы можете выбрать перезапись, если вам нравится просто извлечь из обычного контекстного меню.
Это оно! Файлы 7z теперь извлекаются в папку с собственным именем двойным щелчком мыши. Для других расширений, таких как .rar и .zip, вам необходимо повторить эти шаги для соответствующих ключей. (то есть HKEY_CLASSES_ROOT \ 7-Zip.rar и HKEY_CLASSES_ROOT \ 7-Zip.zip и т. д.)
Да, и для уточнения: он работает с несколькими выбранными файлами. Нет необходимости в пакетном файле.
источник
C:\Program Files\7-Zip\7zG.exe x "%1" -o*
и вуаля.Tools -> Options...
меню).Легкий способ
Установите ExtractNow . Вы можете настроить его, чтобы делать именно то, что вы хотите.
Трудный путь
Ручное изменение реестра следующим образом ...
Начать с
regedit
правами администратораОткройте
HKCR\.7z
и посмотрите на(Default)
значение. Обратите внимание, что это такое (в моем случае, как пользователь PowerArchiver, этоPASZIP
)Перейдите к разделу реестра в
HKCR
названном. (в моем случаеHKCR\PASZIP
)Под этим ключом раскройте
Shell
подразделУстановите
(Default)
значение в строкуextract
Создайте новый подраздел с именем
extract
Установите
(Default)
дляextract
ключа значениеExtract to Folder
Создайте новый подраздел под
extract
именемcommand
Установите
(Default)
значениеcommand
ключа в(возможно, вам придется скорректировать путь)
Спасибо Джастину Реттгеру за указание правильной переменной имени, необходимой для этого.
Это должно быть так. Теперь файлы 7z извлекаются в папку с собственным именем двойным щелчком мыши. Для других расширений, таких как .rar и .zip, вам нужно повторить эти шаги для соответствующих ключей.
Если вы хотите вносить изменения только в свою учетную запись пользователя, а не в систему, измените ее
HKCU\Software\Classes
вместоHKCR
.HKCR
представляет собой виртуальный ключ, это объединениеHKLM\Software\Classes
иHKCU\Software\Classes
где данные в вашем аккаунте (HKCU) перекрывают общесистемные данные (HKLM). Обычно использование regedit в качестве администратора означает, что изменение HKCR изменяет общесистемные данные в HKLM.Извлечение нескольких файлов
Конечно, это не будет работать, если у вас выбрано несколько файлов. Если вы хотите, чтобы это работало, вам нужно создать следующий командный файл:
Теперь следуйте инструкциям выше. На самом последнем шаге установите
(Default)
значениеcommand
ключа равнымC:\Path\To\File.bat %*
Все изменения реестра не проверены в памяти, но должны быть правильными.
источник
%~dpn1
в файловых ассоциациях? (Это не в Windows XP. Кроме того, вы забылиx
о расширении.)x
в имени выходной папки. Что касается работы ... Это хороший вопрос. Я отредактирую по адресу ..."C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1"
я не получил никакой выгоды от запуска,cmd.exe
который я мог сказать, и открытие по умолчанию 7-zip не беспокоило его. Тем не менее, это просто разархивировать%~dpn1
в той же папке, что и ZIP-файл. Это\"%1.d\"
дает подкаталог \ filename.zip.d \ в той же папке, что и zip-файл, так что он ближе, но не удаляет расширение. Я попробовал гибриды двух, не повезло. Любые другие предложения?Вот сценарий PowerShell, который я написал на основе ответа @ haiggoh. Перед тем, как запустить его, вам нужно открыть 7-zip, перейти в Сервис-> Параметры и связать 7-zip с нужными расширениями файлов. После этого запустите следующий скрипт PowerShell (с правами администратора):
Конечно, убедитесь, что
$7zInstallationFolder
переменная содержит правильный путь к вашей установке 7-zip.источник
Передайте параметры как это:
Я припоминаю жалобы на то, что Windows 7 не позволяет напрямую редактировать действия с файлами. Я не знаю, правда ли это или нет ... но если это так, сохраните следующее как
*.reg
файл и импортируйте его.источник
Вот файл .reg, который настраивает Извлечение в папку как поведение по умолчанию при двойном щелчке файлов с одним из следующих расширений - 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Вы можете сделать это для других расширений файлов, используя тот же подход. Я предпочитаю поведение Windows по умолчанию для монтирования ISO / VHD, поэтому я не изменил это, и 7-Zip поддерживает многие другие типы файлов, с которыми я обычно не сталкиваюсь, поэтому я не изменил их для них.
Вы можете отменить это, зайдя в 7-Zip File Manager, Инструменты, Параметры и изменив ассоциации файлов по своему усмотрению.
Я тестировал на Windows 10 x64 / 7-Zip 15.12 x64. Поскольку он использует C: \ Program Files для пути к 7-Zip, вам определенно нужна x64 Windows + x64 7-Zip, но я тестировал только на Windows 10.
У вас будут те же параметры щелчка правой кнопкой мыши, что и раньше, это только изменит то, что происходит при двойном щелчке, и только для этих семи типов файлов (опять же, вы можете сделать это для других типов файлов, используя тот же подход).
Если папка с таким именем уже существует, она выдаст ту же подсказку 7-Zip, которую вы обычно получаете, с вариантами Да / Да для всех / Автоматическое переименование / Нет / Нет для всех.
источник