7-zip & Windows 7: Doppelklicken Sie auf "In <Ordner> extrahieren"

15

Ich versuche eine Möglichkeit zu finden, die Aktion, die Sie ausführen können, über das Kontextmenü "Extrahieren nach <folder_same_as_file_name>" als Standardaktion festzulegen, wenn Sie auf die Datei doppelklicken, anstatt einfach 7-zip zu starten. Gibt es eine einfache Möglichkeit, dies zu tun?

Alternativ könnte ich versuchen, Parameter an Folgendes zu übergeben:

7z x <filename> -o<filename>

Ich bin mir aber nicht sicher, wie ich das einrichten soll (wie ich den Dateinamen-Parameter übergebe, und kann ich das direkt tun oder muss ich stattdessen eine Batch-Datei schreiben und den Dateinamen an sie übergeben? Letzteres finde ich irritierend unelegant, aber was auch immer funktioniert.

schodge
quelle

Antworten:

4

Leider funktioniert die Batch-Programm-Methode von afrazier nicht. Windows kann nicht mehrere Dateien auf diese Weise öffnen. Wenn Sie versuchen, mehrere Dateien mit einem Programm zu öffnen, öffnet Windows nicht eine einzelne Instanz des Programms und übergibt die Dateien als mehrere Argumente an diese eine Instanz. Stattdessen öffnet Windows viele Instanzen des Programms (so viele Instanzen wie Dateien vorhanden sind) und übergibt eine Datei an jede Instanz. Es wäre schön, wenn Sie nur% * verwenden und eine Reihe von Dateien an eine einzelne .bat-Datei übergeben und diese .bat-Datei jeweils eine Schleife ausführen lassen könnten, aber Sie können leider nur% 1 verwenden, wenn Sie diese festlegen Arten von Aktionen in der Registrierung.

Jemand, der etwas Zeit zur Verfügung hat, könnte ein Programm schreiben, das mithilfe eines Mutex-Objekts prüft, ob bereits eine andere Instanz ausgeführt wird. Wenn dies der Fall ist, muss die Datei an diese Instanz übergeben und anschließend geschlossen werden, worauf die ursprüngliche Instanz diese Datei ablegt in eine Warteschlange und zu ihm gelangen, sobald es fertig ist, seine eigene Datei zu verarbeiten. Ein Batch könnte den Trick mit tasklistund findauch machen, aber das ist keine so gute Lösung wie Mutex.

Versuchen Sie es trotzdem mit Ihrem Registrierungswert für den Befehl extract, um den richtigen Ordnernamen zu erhalten:

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

Dadurch wird ein neuer Ordner im selben Verzeichnis wie das Quellarchiv mit demselben Namen wie das Quellarchiv erstellt (ohne Dateierweiterung).

Außerdem habe ich den -aouSchalter hinzugefügt , um Dateikonflikte automatisch zu vermeiden (7z hängt eine Zahl an das Ende einer Datei an, anstatt Sie zu fragen, ob Sie sie überschreiben möchten oder was auch immer).

Justin Roettger
quelle
Gibt es eine Möglichkeit, dies zu tun -o*, aber nur, wenn sich mehr als eine Datei im Archiv befindet? Wie in, kann ich es in das aktuelle Verzeichnis extrahieren, wenn sich nur eine Datei oder ein Ordner im Archiv befindet?
NightExcessive
Die Standardeinstellung in Windows 10 ist, "C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aoudass Sie das 7zFM um 17:36 Uhr in nur 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk
12

Dieser Thread ist aufgrund widersprüchlicher Antworten etwas verwirrend geworden (es hat einige Zeit gedauert, bis ich herausgefunden habe, welche Lösung die richtige war). Daher hielt ich es für eine gute Idee, die Ergebnisse der Posts von afrazier und Justin Roettger in Kombination mit meinen eigenen Posts zusammenzufassen Erfahrungen:

  1. Starten Sie regedit als Administrator
  2. Öffnen HKEY_CLASSES_ROOT\7-Zip.7z
  3. Erweitern Sie unter diesem Schlüssel den ShellUnterschlüssel
  4. Setzen Sie den (Default)Wert auf die Zeichenfolgeextract
  5. Erstellen Sie einen neuen Unterschlüssel mit dem Namen extract
  6. Stellen Sie den (Default)Wert für den extractSchlüssel aufExtract to Folder
  7. Erstellen Sie einen neuen Unterschlüssel unter extractnamedcommand
  8. Stellen Sie den (Default)Wert des commandSchlüssels auf:

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

(Möglicherweise müssen Sie dies anpassen, um dem Pfad Ihrer 7-Zip-Installation zu entsprechen.)

Anstelle von 7z mit -aou, wie Justin Roettger vorschlug, habe ich 7zG verwendet, da Sie auf diese Weise das Überschreiben auswählen können, wenn Sie nur mit dem normalen Kontextmenü extrahieren möchten.

Das ist es! 7z-Dateien werden nun per Doppelklick in einen Ordner mit eigenem Namen extrahiert. Für andere Erweiterungen wie .rar und .zip müssen Sie diese Schritte für die entsprechenden Schlüssel wiederholen. (dh HKEY_CLASSES_ROOT \ 7-Zip.rar und HKEY_CLASSES_ROOT \ 7-Zip.zip und so weiter)

Oh und um es zu verdeutlichen: Es funktioniert auch mit mehreren ausgewählten Dateien. Keine Batchdatei erforderlich.

Haiggoh
quelle
1
Ich sehe diesen Registrierungspfad nicht. Ich bin auf Windows 8 mit 64-Bit-7zip.
Phillipwei
Vieles hat sich seit diesem Beitrag geändert, aber es funktioniert immer noch großartig ... für mich war es unter 7z_auto_file, nicht 7-Zip.7z. Alles was ich getan habe, war das bestehende "Kommando" auf C:\Program Files\7-Zip\7zG.exe x "%1" -o*und voila zu ändern.
neokio
Unter Windows 10 wurde der Pfad auch erst angezeigt, nachdem ich im 7-Zip-Dateimanager (über das Tools -> Options...Menü) mindestens eine Datei mit 7-Zip verknüpft hatte .
Chris Nolet
Weiß jemand, warum dies unter Windows 10 nicht mehr funktioniert? Die Pfade scheinen die gleichen zu sein, aber ich bekomme nur ein schwarzes Konsolenfenster, das sich sofort schließt und nichts extrahiert. Versuchte alle Methoden in diesem Thread.
Ryan Weiss
5

Der einfache Weg

Installieren Sie ExtractNow . Sie können es so konfigurieren, dass es genau das tut, was Sie wollen.


Der harte Weg

Manuelle Registrierungsänderung wie folgt ...

  • Starten Sie regeditals Administrator

  • Öffne HKCR\.7zund betrachte den (Default)Wert. Beachten Sie, was das ist (in meinem Fall als PowerArchiver-Benutzer PASZIP)

  • Gehen Sie zum Registrierungsschlüssel mit dem HKCRNamen that. (in meinem Fall HKCR\PASZIP)

  • Erweitern Sie unter diesem Schlüssel den ShellUnterschlüssel

  • Setzen Sie den (Default)Wert auf die Zeichenfolgeextract

  • Erstellen Sie einen neuen Unterschlüssel mit dem Namen extract

  • Stellen Sie den (Default)Wert für den extractSchlüssel aufExtract to Folder

  • Erstellen Sie einen neuen Unterschlüssel unter extractnamedcommand

  • Stellen Sie den (Default)Wert des commandSchlüssels auf

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

    (Möglicherweise müssen Sie den Pfad anpassen)

Vielen Dank an Justin Roettger für den Hinweis auf die richtige Namensvariable.

Das sollte es sein. Jetzt werden 7z-Dateien per Doppelklick in einen Ordner mit eigenem Namen extrahiert. Für andere Erweiterungen wie .rar und .zip müssen Sie diese Schritte für die entsprechenden Schlüssel wiederholen.

Wenn Sie die Änderungen nur in Ihrem Benutzerkonto anstatt systemweit vornehmen möchten, ändern Sie HKCU\Software\Classesstatt HKCR. HKCRist ein virtueller Schlüssel, der eine Vereinigung ist HKLM\Software\Classesund HKCU\Software\Classeswo die Daten in Ihrem Konto (HKCU) überschreiben die systemweite Daten (HKLM). Wenn Sie regedit normalerweise als Administrator ausführen, werden durch das Ändern von HKCR systemweite Daten in HKLM geändert.


Mehrere Dateien extrahieren

Dies funktioniert natürlich nicht, wenn Sie mehrere Dateien ausgewählt haben. Wenn das funktionieren soll, müssen Sie die folgende Batchdatei erstellen:

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

Befolgen Sie nun die obigen Anweisungen. Setzen Sie im allerletzten Schritt den (Default)Wert des commandSchlüssels aufC:\Path\To\File.bat %*

Alle Registrierungsänderungen sind ungetestet, sollten aber korrekt sein.

afrazier
quelle
Arbeitet %~dpn1in Dateizuordnungen? ( x
Dies ist
1
@grawity: Sie möchten nicht, dass der xName im Ausgabeordner steht. Wie es funktioniert ... Das ist eine gute Frage. Ich bearbeite die Adresse ...
afrazier
Hm, guter Punkt.
user1686
So nah dran, aber noch nicht ganz da. Nachdem ich mit dem Code gespielt habe, der sowohl unheimlicher als auch unheimlicher Art ist, habe ich den Standardschlüsselwert festgelegt, da "C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" ich keinen Nutzen aus dem Ausführen ziehen konnte cmd.exe, den ich feststellen konnte, und die Standardöffnung von 7-zip hat sich nicht darum gekümmert. Dies wird jedoch nur %~dpn1in denselben Ordner entpackt, in dem sich die ZIP-Datei befindet. Das \"%1.d\"gibt ein \ filename.zip.d \ -Unterverzeichnis im selben Ordner wie die zip-Datei an, ist also näher, aber entfernt die Erweiterung nicht. Ich habe Hybriden der beiden ausprobiert, kein Glück. Irgendwelche anderen Vorschläge?
Ausweichen
Sie müssen wahrscheinlich eine Batch-Datei verwenden.
afrazier
2

Hier ist ein PowerShell-Skript, das ich basierend auf der Antwort von @ haiggoh geschrieben habe. Bevor Sie es ausführen, müssen Sie 7-zip öffnen, zu Extras-> Optionen gehen und 7-zip den gewünschten Dateierweiterungen zuordnen. Führen Sie anschließend das folgende PowerShell-Skript aus (mit Administratorrechten):

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

Stellen Sie natürlich sicher, dass die $7zInstallationFolderVariable den richtigen Pfad zu Ihrer 7-zip-Installation enthält.

xx77aBs
quelle
Wie kann ich es wiederherstellen? Ich Deinstallation und Neuinstallation hat nicht funktioniert
Lombas
@Lombas versuchen, 7-zip erneut mit diesen Erweiterungen zu verknüpfen. Wenn dies nicht funktioniert, entfernen Sie die Registrierungsschlüssel und versuchen Sie es erneut.
xx77aBs
7-zip wieder mit den Erweiterungen verknüpft hat funktioniert. Vielen Dank!
Lombas
0

Übergeben Sie Parameter wie folgt:

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

Ich erinnere mich an Beschwerden über Windows 7, wonach Dateiaktionen nicht direkt bearbeitet werden können. Ich weiß nicht, ob dies zutrifft oder nicht. Wenn dies zutrifft, speichern Sie Folgendes als *.regDatei und importieren Sie sie.

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\""
user1686
quelle
0

Hier ist eine .reg-Datei, die das Extrahieren in einen Ordner als Standardverhalten konfiguriert, wenn Sie auf Dateien mit einer der folgenden Erweiterungen doppelklicken: 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Sie können dies für andere Dateierweiterungen auf dieselbe Weise tun. Ich bevorzuge das Windows-Standardverhalten für das Mounten von ISO / VHD, daher habe ich das nicht geändert, und 7-Zip unterstützt viele andere Dateitypen, die mir normalerweise nicht begegnen, sodass ich sie für diese nicht geändert habe.

Sie können dies wiederherstellen, indem Sie in den 7-Zip-Dateimanager, Extras, Optionen wechseln und die Dateizuordnungen nach Bedarf ändern.

Ich habe es unter Windows 10 x64 / 7-Zip 15.12 x64 getestet. Da für den Pfad zu 7-Zip C: \ Programme verwendet wird, benötigen Sie auf jeden Fall x64 Windows + x64 7-Zip, aber ich habe es nur unter Windows 10 getestet.

Sie haben die gleichen Rechtsklickoptionen wie zuvor. Dies ändert nur, was beim Doppelklicken geschieht, und dies nur für diese sieben Dateitypen (Sie können dies auch für andere Dateitypen tun, die denselben Ansatz verwenden).

Wenn es bereits einen Ordner mit diesem Namen gibt, erhalten Sie dieselbe 7-Zip-Eingabeaufforderung, die Sie normalerweise erhalten, mit den Optionen Ja / Ja zu allen / Automatisch umbenennen / Nein / Nein zu allen.

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

Craig
quelle