7-zip & Windows 7: Faça o padrão “Extrair para pasta” ao clicar duas vezes

14

Estou tentando encontrar uma maneira de executar a ação que você pode executar no menu de contexto, "Extrair para <folder_same_as_file_name> " a ação padrão ao clicar duas vezes no arquivo em vez de simplesmente iniciar o 7-zip. Existe uma maneira simples de fazer isso?

Como alternativa, conclui que posso tentar passar parâmetros para o seguinte:

7z x <filename> -o<filename>

Mas não tenho certeza de como configurá-lo (como passar o parâmetro filename, e posso fazer isso diretamente ou terei que gravar um arquivo em lotes e passar o nome do arquivo para ele? O último que eu encontrar irritantemente deselegante, mas o que quer que funcione.

    
por schodge 18.03.2011 / 21:15

6 respostas

4

Infelizmente, o método de programa em lote do afrazier não funciona; O Windows não suporta a abertura de vários arquivos como esse. Quando você tenta abrir vários arquivos com um programa, o Windows não abre uma única instância do programa e passa os arquivos como vários argumentos para essa instância. Em vez disso, o Windows abre muitas instâncias do programa (quantas instâncias houver arquivos), passando um arquivo para cada instância. Seria bom se você pudesse usar% * e passar um monte de arquivos para um único .bat, e fazer com que o .bat executasse um loop processando cada arquivo um de cada vez, mas infelizmente você só pode usar% 1 ao configurar estes arquivos. tipos de ações no registro.

Alguém com algum tempo livre poderia escrever um programa que usa um objeto mutex para verificar se já existe outra instância em execução e, se houver, para passar o arquivo para essa instância e, em seguida, fechar, em que a instância original será Coloque esse arquivo em uma fila e chegue a ele assim que terminar de processar seu próprio arquivo. um lote poderia fazer o truque usando tasklist e find também, mas isso não é tão bom quanto uma solução como mutex.

De qualquer forma, tente isso para o valor do registro do comando de extração para obter o nome correto da pasta:

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

Isso criará uma nova pasta no mesmo diretório do arquivo de origem com o mesmo nome do arquivo de origem (sem a extensão do arquivo).

Além disso, adicionei a opção -aou para evitar automaticamente conflitos de nome de arquivo (o 7z acrescentará um número ao final de um arquivo, perguntando se você deseja sobrescrever ou algo assim).

    
por 26.04.2011 / 17:50
10

Este tópico tornou-se um pouco confuso por causa de respostas contraditórias (levei algum tempo para descobrir qual era a solução correta), então achei que seria uma boa ideia resumir os resultados dos posts de afrazier e Justin Roettger combinados com minhas próprias experiências:

  1. Inicie o regedit como administrador
  2. Abrir HKEY_CLASSES_ROOT-Zip.7z
  3. Abaixo dessa chave, expanda a subchave Shell
  4. Defina o valor (Default) para a string extract
  5. Crie uma nova subchave denominada extract
  6. Defina o valor (Default) da chave extract para Extract to Folder
  7. Crie uma nova subchave em extract named command
  8. Defina o valor (Default) da chave command para:

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

(você pode ter que ajustar isso para combinar com o caminho da instalação do 7zip)

Em vez de 7z com -ou como Justin Roettger sugeriu que acabei usando 7zG, porque desta forma você pode optar por substituir se você gosta apenas de extrair com o menu de contexto normal.

É isso! Os arquivos 7z agora são extraídos para uma pasta com seu próprio nome por um clique duplo. Para outras extensões, como .rar e .zip, é necessário repetir essas etapas para as teclas correspondentes. (ou seja, HKEY_CLASSES_ROOT \ 7-Zip.rar e HKEY_CLASSES_ROOT \ 7-Zip.zip e assim por diante)

Ah, e para esclarecer: funciona com vários arquivos selecionados também. Não precisa de arquivo em lotes.

    
por 11.07.2012 / 22:12
5

O caminho mais fácil

Instale ExtractNow . Você pode configurá-lo para fazer exatamente o que você quer.

O caminho mais difícil

Modificação manual do registro da seguinte forma ...

  • Iniciar regedit como administrador

  • Abra HKCR\.7z e observe o valor (Default) . Tome nota do que é isso (no meu caso, como usuário do PowerArchiver, é PASZIP )

  • Vá para a chave do registro em HKCR , nomeou isso. (no meu caso HKCR\PASZIP )

  • Sob essa chave, expanda a subchave Shell

  • Defina o valor (Default) para a string extract

  • Crie uma nova subchave denominada extract

  • Defina o valor (Default) da chave extract para Extract to Folder

  • Crie uma nova subchave em extract named command

  • Defina o valor (Default) da chave command para

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

    (você pode ter que ajustar o caminho)

Obrigado a Justin Roettger por apontar a variável de nome correta necessária para isso.

Deve ser isso. Agora 7z arquivos são extraídos para uma pasta com o seu próprio nome por um duplo clique. Para outras extensões, como .rar e .zip, é necessário repetir essas etapas para as chaves correspondentes.

Se você quiser apenas fazer as alterações na sua conta de usuário em vez de em todo o sistema, modifique HKCU\Software\Classes em vez de HKCR . HKCR é uma chave virtual que é uma união de HKLM\Software\Classes e HKCU\Software\Classes , em que os dados da sua conta (HKCU) substituem os dados do sistema inteiro (HKLM). Normalmente, executar o regedit como um Administrador significa que a modificação do HKCR altera os dados do sistema em HKLM.

Extraindo vários arquivos

Claro, isso não funcionará se você tiver vários arquivos selecionados. Se você quiser que isso funcione, você precisa criar o seguinte arquivo em lotes:

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

Agora, siga as instruções acima. Na última etapa, defina o valor (Default) da chave command para C:\Path\To\File.bat %*

Todas as modificações no registro não foram testadas na memória, mas devem estar corretas.

    
por 18.03.2011 / 21:40
2

Aqui está o script do PowerShell que eu escrevi baseado na resposta do @ haiggoh. Antes de executá-lo, você precisa abrir o 7-zip, ir para Ferramentas- > Opções e associar o 7-zip às extensões de arquivo desejadas. Depois disso, execute o seguinte script do PowerShell (com direitos de administrador):

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

Claro, certifique-se de que a variável $7zInstallationFolder contenha o caminho correto para a instalação do 7-zip.

    
por 19.09.2015 / 00:22
0

Passar parâmetros como este:

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

Eu me lembro de ouvir reclamações sobre o Windows 7 que não permitia editar diretamente as ações do arquivo. Não sei se isso é verdade ou não ... mas se for, salve o seguinte como um arquivo *.reg e importe-o.

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\""
    
por 18.03.2011 / 21:38
0

Aqui está um arquivo .reg que configura o Extrair para pasta como o comportamento padrão ao clicar duas vezes em arquivos com uma das seguintes extensões: 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Você poderia fazer isso para outras extensões de arquivo usando a mesma abordagem. Eu prefiro o comportamento padrão do Windows para montagem ISO / VHD, então eu não mudei isso, e o 7-Zip suporta muitos outros tipos de arquivos que eu não encontro normalmente, então eu não mudei para eles.

Você pode reverter isso indo para o Gerenciador de Arquivos 7-Zip, Ferramentas, Opções e alterando as associações de arquivo conforme desejado.

Eu testei no Windows 10 x64 / 7-Zip 15.12 x64. Como ele usa o C: \ Program Files para o caminho para o 7-Zip, você definitivamente precisa do x64 Windows + x64 7-Zip, mas eu só testei no Windows 10.

Você terá as mesmas opções de clique com o botão direito de antes, isso só muda o que acontece quando você clica duas vezes e apenas para esses sete tipos de arquivo (novamente, você poderia fazer isso para outros tipos de arquivo usando a mesma abordagem).

Se já houver uma pasta com esse nome, ela fornecerá o mesmo prompt do 7-Zip que você recebe normalmente, com opções de Sim / Sim para Todos / Renomeação automática / Não / Não para Todos.

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\""
    
por 04.12.2015 / 21:13