7-zip e Windows 7: imposta "Estrai in <cartella>" come predefinito facendo doppio clic


15

Sto cercando di trovare un modo per eseguire l'azione che puoi eseguire dal menu di scelta rapida "Estrai in <folder_same_as_file_name>" l'azione predefinita quando fai doppio clic sul file invece di avviare semplicemente 7-zip. C'è un modo semplice per fare questo?

In alternativa, ritengo di poter provare a passare i parametri nei seguenti:

7z x <filename> -o<filename>

Ma non sono sicuro di come impostarlo (come passare il parametro del nome file, e posso farlo direttamente o dovrò invece scrivere un file batch e passarci il nome del file? Quest'ultimo trovo irritante e non elegante, ma Basta che funzioni.

Risposte:


4

Sfortunatamente, il metodo del programma batch di Afrazier non funzionerà; Windows non gestisce l'apertura di più file in questo modo. Quando si tenta di aprire più file con un programma, Windows non apre una singola istanza del programma e passa i file come argomenti multipli a quella singola istanza. Al contrario, Windows apre molte istanze del programma (tante quante sono i file), passando un file a ciascuna istanza. Sarebbe bello se tu potessi semplicemente usare% * e passare un mucchio di file a un singolo .bat, e fare in modo che .bat esegua un ciclo che elabora ogni file uno alla volta, ma sfortunatamente puoi usare% 1 solo quando imposti questi tipi di azioni nel registro.

Qualcuno con un po 'di tempo a disposizione potrebbe scrivere un programma che utilizza un oggetto mutex per verificare se è già in esecuzione un'altra istanza e, in tal caso, per passare il file a tale istanza e quindi chiuderlo, per cui l'istanza originale inserirà quel file in una coda e accedervi una volta terminata l'elaborazione del proprio file. un batch potrebbe fare il trucco usando taskliste find, anche, ma non è una soluzione valida come mutex.

Ad ogni modo, prova questo per il valore del registro del comando extract per ottenere il nome della cartella corretta:

"\path\to\7z.exe" x "%1" -o* -aou

Ciò creerà una nuova cartella nella stessa directory dell'archivio di origine con lo stesso nome dell'archivio di origine (senza l'estensione di file).

Inoltre, ho aggiunto l' -aouopzione per evitare automaticamente conflitti di nome file (7z aggiungerà un numero alla fine di un file invece chiedendoti se vuoi sovrascrivere o altro).


C'è un modo per fare così -o*, ma solo se c'è più di un file nell'archivio? Come in, posso farlo estrarre nella directory corrente se c'è solo un file o una cartella nell'archivio?
NightExcessive il

L'impostazione predefinita in Windows 10 è "C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aouquindi cambiare il 7zFM a solo 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk il

12

Questo thread è diventato un po 'confuso a causa delle risposte contraddittorie (mi ci è voluto un po' di tempo per capire quale fosse la soluzione giusta), quindi ho pensato che potesse essere una buona idea riassumere i risultati dei post di Afrazier e Justin Roettger combinati con i miei esperienze:

  1. Avvia regedit come amministratore
  2. Aperto HKEY_CLASSES_ROOT\7-Zip.7z
  3. Sotto quella chiave, espandi la Shellsottochiave
  4. Imposta il (Default)valore sulla stringaextract
  5. Crea una nuova sottochiave denominata extract
  6. Impostare il (Default)valore per la extractchiave suExtract to Folder
  7. Crea una nuova sottochiave sotto il extractnomecommand
  8. Impostare il (Default)valore della commandchiave su:

C:\Program Files\7-Zip\7zG.exe x "%1" -o*

(potrebbe essere necessario modificarlo in modo che corrisponda al percorso dell'installazione di 7-Zip)

Invece di 7z con -aou come Justin Roettger mi ha suggerito di finire con 7zG, perché in questo modo puoi scegliere di sovrascrivere se ti piace semplicemente estrarre con il normale menu contestuale.

Questo è tutto! I file 7z vengono ora estratti in una cartella con il proprio nome con un doppio clic. Per altre estensioni come .rar e .zip è necessario ripetere questi passaggi per i tasti corrispondenti. (ad esempio HKEY_CLASSES_ROOT \ 7-Zip.rar e HKEY_CLASSES_ROOT \ 7-Zip.zip e così via)

Oh e per chiarire: funziona anche con più file selezionati. Non è necessario alcun file batch.


1
Non vedo quel percorso di registro. Sono su Windows 8 con 7zip a 64 bit.
phillipwei,

Molte cose sono cambiate da questo post, ma funziona ancora alla grande ... per me, era sotto 7z_auto_file, non 7-Zip.7z. Tutto quello che ho fatto è stato modificare il "comando" esistente in C:\Program Files\7-Zip\7zG.exe x "%1" -o*e voilà.
Neokio,

Su Windows 10, inoltre, non ho visto il percorso fino a quando non ho associato almeno un file con 7-Zip nel File Manager 7-Zip (tramite Tools -> Options...menu).
Chris Nolet,

Qualcuno sa perché questo non funziona più su Windows 10? I percorsi sembrano essere gli stessi, ma ho appena una finestra nera della console che si chiude immediatamente e non viene estratto nulla. Ho provato tutti i metodi in questo thread.
Ryan Weiss,

5

Il modo semplice

Installa ExtractNow . Puoi configurarlo per fare esattamente quello che vuoi.


Nel modo più duro

Modifica manuale del registro come segue ...

  • Inizia regeditcome amministratore

  • Apri HKCR\.7ze osserva il (Default)valore. Prendi nota di ciò che è (nel mio caso, come utente PowerArchiver, è PASZIP)

  • Vai alla chiave di registro in HKCRquel nome. (nel mio caso HKCR\PASZIP)

  • Sotto quella chiave, espandi la Shellsottochiave

  • Imposta il (Default)valore sulla stringaextract

  • Crea una nuova sottochiave denominata extract

  • Impostare il (Default)valore per la extractchiave suExtract to Folder

  • Crea una nuova sottochiave sotto il extractnomecommand

  • Impostare il (Default)valore della commandchiave su

    C:\Program Files\7-Zip\7zG.exe x "%1" -o* -aou
    

    (potresti dover regolare il percorso)

Grazie a Justin Roettger per aver indicato la variabile del nome corretta necessaria per questo.

Questo dovrebbe essere. Ora i file 7z vengono estratti in una cartella con il proprio nome con un doppio clic. Per altre estensioni come .rar e .zip è necessario ripetere questi passaggi per i tasti corrispondenti.

Se desideri solo apportare le modifiche al tuo account utente anziché a livello di sistema, modifica HKCU\Software\Classesinvece di HKCR. HKCRè una chiave virtuale di cui è parte l'unione HKLM\Software\Classese in HKCU\Software\Classescui i dati nel tuo account (HKCU) sovrascrivono i dati a livello di sistema (HKLM). Normalmente eseguire regedit come amministratore significa che la modifica di HKCR altera i dati di sistema in HKLM.


Estrazione di più file

Naturalmente, questo non funzionerà se hai selezionato più file. Se vuoi che funzioni, devi creare il seguente file batch:

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

Ora segui le istruzioni sopra. Nell'ultimo passaggio, imposta il (Default)valore della commandchiave suC:\Path\To\File.bat %*

Tutte le modifiche al registro non sono state testate dalla memoria, ma dovrebbero essere corrette.


Funziona %~dpn1in associazioni di file? (Non funziona in Windows XP. Inoltre, hai dimenticato l' xestensione.)
user1686

1
@grawity: non si desidera il xnome della cartella di output. Per quanto riguarda il funzionamento ... Questa è una buona domanda.
Modificherò

Hm, buon punto.
user1686

Così vicino, ma non ancora del tutto lì. Dopo aver giocato con il codice fornito da Afrazier e Grawity, ho impostato il valore della chiave predefinito poiché "C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" non stavo ottenendo alcun beneficio dall'esecuzione cmd.exeche potevo dire, e l'apertura predefinita di 7-zip non si è disturbata. Tuttavia, questo è solo decomprimere %~dpn1nella stessa cartella del file zip. Il \"%1.d\"dà un \ filename.zip.d \ sottodirectory nella stessa cartella del file zip, quindi è più vicino, ma non togliendo l'estensione. Ho provato gli ibridi dei due, senza fortuna. Altri suggerimenti?
schodge il

Probabilmente dovrai usare un file batch.
Afrazier

2

Ecco lo script di PowerShell che ho scritto sulla base della risposta di @ haiggoh. Prima di eseguirlo, devi aprire 7-zip, vai su Strumenti-> Opzioni e associa 7-zip alle estensioni di file desiderate. Successivamente, esegui il seguente script PowerShell (con diritti di amministratore):

$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*')
}

Naturalmente, assicurati che la $7zInstallationFoldervariabile contenga il percorso corretto per la tua installazione a 7 zip.


Come ripristinarlo? La disinstallazione e reinstallazione non ha funzionato
Lombas

@Lombas prova ad associare nuovamente 7-zip a quelle estensioni, se non funziona rimuovi le chiavi di registro e riprova.
xx77aBs

associando nuovamente 7-zip con le estensioni funzionate. Grazie mille!
Lombas,

0

Passa parametri come questo:

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

Ricordo di aver sentito lamentele riguardo a Windows 7 che non permetteva di modificare direttamente le azioni dei file. Non so se questo è vero o no ... ma se lo è, salva quanto segue come *.regfile e importalo.

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\""

0

Ecco un file .reg che configura Estrai nella cartella come comportamento predefinito quando si fa doppio clic sui file con una delle seguenti estensioni: 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Potresti farlo per altre estensioni di file usando lo stesso approccio. Preferisco il comportamento predefinito di Windows per il montaggio ISO / VHD, quindi non l'ho modificato e 7-Zip supporta molti altri tipi di file che non incontro comunemente, quindi non l'ho modificato per quelli.

Puoi ripristinarlo accedendo a File Manager 7-Zip, Strumenti, Opzioni e modificando le associazioni di file come desiderato.

Ho provato su Windows 10 x64 / 7-Zip 15.12 x64. Poiché utilizza C: \ Programmi per il percorso di 7-Zip, hai sicuramente bisogno di x64 Windows + x64 7-Zip, ma ho provato solo su Windows 10.

Avrai le stesse opzioni del tasto destro di prima, questo cambia solo ciò che accade quando fai doppio clic e solo per quei sette tipi di file (di nuovo, puoi farlo per altri tipi di file usando lo stesso approccio).

Se esiste già una cartella con quel nome, ti darà lo stesso prompt di 7-Zip che ricevi normalmente, con le opzioni da Sì / Sì a Tutto / Rinomina auto / No / No a Tutto.

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\""

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.