7-zip ve Windows 7: Çift tıklamayla “<klasöre> Ayıkla” seçeneğini varsayılan yapın


15

Ben <folder_same_as_file_name>sadece 7-zip başlatmak yerine dosyayı çift tıklarken, bağlam menüsünden "Ayıkla " varsayılan eylem gerçekleştirebilirsiniz eylem yapmak için bir yol bulmaya çalışıyorum . Bunu yapmanın kolay bir yolu var mı?

Alternatif olarak, aşağıdaki parametrelere geçmeyi deneyebilirim toplamak:

7z x <filename> -o<filename>

Ancak bunu nasıl ayarlayacağımdan emin değilim (dosyaadı parametresini nasıl geçirebilirim ve bunu doğrudan yapabilir miyim yoksa bunun yerine bir toplu iş dosyası yazmam ve dosya adını ona iletmem gerekecek mi? Nasıl uygun görürsen.

Yanıtlar:


4

Ne yazık ki, afrazier'in toplu program yöntemi çalışmaz; Windows bunun gibi birden fazla dosya açmayı işlemez. Bir programla birden çok dosya açmaya çalıştığınızda, Windows programın tek bir örneğini açmaz ve dosyaları bu örneğe birden çok bağımsız değişken olarak iletmez. Bunun yerine, Windows programın birçok örneğini (dosya sayısı kadar) açar ve her örneğe bir dosya iletir. Sadece% * kullanabilir ve bir grup dosyayı tek bir .bat dosyasına aktarabilir ve bu .bat dosyasını her bir dosyayı birer birer işlemek için bir döngü çalıştırırsanız iyi olur, ancak ne yazık ki bunları ayarlarken yalnızca% 1'i kullanabilirsiniz. kayıt defterindeki işlemler.

Ellerinde biraz zaman geçiren biri, zaten çalışan başka bir örnek olup olmadığını kontrol etmek için mutex nesnesini kullanan bir program yazabilir ve varsa, dosyayı bu örneğe iletip sonra kapatabilir, orijinal örnek bu dosyayı koyacaktır. kuyruğa girin ve kendi dosyasını işledikten sonra ona ulaşın. bir parti tasklistve kullanarak da hile yapabilir find, ancak bu muteks kadar iyi bir çözüm değil.

Her neyse, doğru klasör adını almak için extract komut kayıt defteri değeriniz için bunu deneyin:

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

Bu, kaynak arşivle aynı adda kaynak arşivle aynı ada sahip yeni bir klasör oluşturur (dosya uzantısını sans).

Ayrıca, -aoudosya adı çakışmalarını otomatik olarak önlemek için anahtarı ekledim (7z bir dosyanın sonuna bir sayı ekler, bunun yerine üzerine yazmak isteyip istemediğinizi sorar).


Yaptığı gibi bir yol var mı -o*, ancak arşivde birden fazla dosya varsa? Arşivde yalnızca bir dosya veya klasör varsa, geçerli dizine ayıklamasını yapabilir miyim?
NightExcessive

Windows 10'da varsayılan olarak "C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aou7zFM'yi sadece 7z olarak değiştirin"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk

12

Bu konu, çelişkili cevaplar nedeniyle biraz kafa karıştırıcı hale geldi (hangisinin doğru çözüm olduğunu bulmak biraz zaman aldı), bu yüzden afrazier'in ve Justin Roettger'ın kendi ile taranmış mesajlarının sonuçlarını özetlemenin iyi bir fikir olabileceğini düşündüm. deneyimler:

  1. Yönetici olarak regedit'i başlat
  2. Açık HKEY_CLASSES_ROOT\7-Zip.7z
  3. Bu anahtarın altında Shellalt anahtarı genişletin
  4. (Default)Değeri dizeye ayarlayınextract
  5. Adlı yeni bir alt anahtar oluşturun extract
  6. Set (Default)değerini extractanahtarıExtract to Folder
  7. Altında yeni bir alt anahtar oluşturun extractadlıcommand
  8. Anahtarın (Default)değerini şu şekilde ayarlayın command:

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

(bunu 7-Zip kurulumunuzun yoluna uyacak şekilde ayarlamanız gerekebilir)

7z yerine -aou ile Justin Roettger önerdiğim gibi 7zG kullanmayı bitirdim, çünkü bu şekilde normal içerik menüsüyle çıkartmak isterseniz üzerine yazmayı seçebilirsiniz.

Bu kadar! 7z dosyaları şimdi çift tıklayarak kendi adlarına sahip bir klasöre çıkarılır. .Rar ve .zip gibi diğer uzantılar için bu adımları ilgili anahtarlar için tekrarlamanız gerekir. (ör. HKEY_CLASSES_ROOT \ 7-Zip.rar ve HKEY_CLASSES_ROOT \ 7-Zip.zip vb.)

Ve açıklığa kavuşturmak için: Seçilen birden çok dosya ile de çalışır. Toplu dosya gerekmez.


1
Bu kayıt defteri yolunu görmüyorum. 64 bit 7zip ile Windows 8 kullanıyorum.
phillipwei

Bu yazıdan beri çok şey değişti, ama yine de harika çalışıyor ... benim için 7z_auto_file, 7-Zip.7z altında değildi. Tek yaptığım mevcut "komutu" C:\Program Files\7-Zip\7zG.exe x "%1" -o*ve voila olarak değiştirmekti.
neokio

Windows 10'da, 7-Zip Dosya Yöneticisi'nde ( Tools -> Options...menü aracılığıyla ) en az bir dosyayı 7-Zip ile ilişkilendirene kadar yolu da görmedim .
Chris Nolet

Bunun neden artık Windows 10'da çalışmadığını bilen var mı? Yollar aynı gibi görünüyor, ama hemen kapanan siyah bir konsol penceresi alıyorum ve hiçbir şey çıkarılmıyor. Bu konudaki tüm yöntemleri denedim.
Ryan Weiss

5

Kolay yol

ExtractNow'u yükleyin . Tam olarak ne istediğinizi yapacak şekilde yapılandırabilirsiniz.


Zor yol

El ile kayıt defteri değişikliği aşağıdaki gibi ...

  • regeditYönetici olarak başla

  • Açın HKCR\.7zve (Default)değere bakın. Bunun ne olduğunu not edin (benim durumumda, bir PowerArchiver kullanıcısı olarak, PASZIP)

  • Adındaki kayıt defteri anahtarına gidin HKCR. (benim durumumda HKCR\PASZIP)

  • Bu anahtarın altında Shellalt anahtarı genişletin

  • (Default)Değeri dizeye ayarlayınextract

  • Adlı yeni bir alt anahtar oluşturun extract

  • Set (Default)değerini extractanahtarıExtract to Folder

  • Altında yeni bir alt anahtar oluşturun extractadlıcommand

  • Set (Default)değerini commandanahtarına

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

    (yolu ayarlamanız gerekebilir)

Bunun için gereken doğru isim değişkenini işaret ettiği için Justin Roettger'a teşekkürler.

Öyle olmalı. Şimdi 7z dosyaları, çift tıklamayla kendi adlarına sahip bir klasöre çıkarılır. .Rar ve .zip gibi diğer uzantılar için bu adımları ilgili anahtarlar için tekrarlamanız gerekir.

Kullanıcı hesabınızda yalnızca sistem genelinde değil değişiklik yapmak istiyorsanız, HKCU\Software\Classesbunun yerine değiştirin HKCR. HKCRbirleşimidir HKLM\Software\Classesve HKCU\Software\Classeshesabınızdaki verilerin (HKCU) sistem genelindeki verileri (HKLM) geçersiz kıldığı sanal bir anahtardır . Normal olarak regedit'i Yönetici olarak çalıştırmak, HKCR'nin değiştirilmesinin HKLM'deki sistem genelindeki verileri değiştirdiği anlamına gelir.


Birden çok dosyayı ayıklama

Elbette, birden fazla dosya seçtiyseniz bu çalışmaz. Bunun çalışmasını istiyorsanız, aşağıdaki toplu iş dosyasını oluşturmanız gerekir:

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

Şimdi yukarıdaki talimatları uygulayın. En son adımda, set (Default)değerini commandanahtarınaC:\Path\To\File.bat %*

Kayıt defteri değişikliklerinin tümü bellekten sınanmamıştır, ancak doğru olmalıdır.


%~dpn1Dosya ilişkilendirmelerinde çalışır mı ? (Windows XP'de yoktur. Ayrıca, xuzantıyı unuttunuz .)
user1686

1
@grawity: xÇıktı klasörü adında istemiyorsunuz . Çalışmaya gelince ... Bu iyi bir soru. Adrese düzenleyeceğim ...
afrazier

Hm, güzel nokta.
Kullanıcı1686

Çok yakın, ama henüz tam olarak orada değil. Hem daha rahat hem de grawity kodunu oynadıktan sonra , söyleyebileceğim "C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" herhangi bir fayda elde edemediğim için varsayılan anahtar değerine sahibim cmd.exeve 7-zip'in varsayılan açık onunla uğraşmadı. Ancak, bu sadece %~dpn1zip dosyası ile aynı klasörde unzipping . \"%1.d\"Daha yakın, ama uzatma kapalı sıyırma o kadar zip dosyası ile aynı klasörde bir \ filename.zip.d \ alt dizin verir. İkisinin melezlerini denedim, şans yok. Başka öneriniz var mı?
schodge

Muhtemelen bir toplu iş dosyası kullanmanız gerekecektir.
afrazier

2

İşte @ haiggoh'un cevabına dayanarak yazdığım PowerShell betiği. Çalıştırmadan önce 7-zip'i açmanız, Araçlar-> Seçenekler'e gitmeniz ve 7-zip'i istenen dosya uzantılarıyla ilişkilendirmeniz gerekir. Bundan sonra, aşağıdaki PowerShell betiğini çalıştırın (yönetici haklarıyla):

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

Elbette, $7zInstallationFolderdeğişkenin 7-zip kurulumunuza doğru yolu içerdiğinden emin olun .


Nasıl geri alınır? Kaldırma ve yeniden yükleme işe yaramadı
Lombas

@Lombas, 7-zip'i bu uzantılarla tekrar ilişkilendirmeyi dener, işe yaramazsa kayıt defteri anahtarlarını kaldırın ve tekrar deneyin.
xx77aBs

7-zip'i yine uzantılarla ilişkilendirerek çalıştı. Çok teşekkür ederim!
Lombas

0

Aşağıdaki gibi parametreleri iletin:

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

Windows 7 ile ilgili dosya işlemlerinin doğrudan düzenlenmesine izin vermeyen işitme şikayetlerini hatırlıyorum. Bunun doğru olup olmadığını bilmiyorum ... ama öyleyse, aşağıdakileri bir *.regdosya olarak kaydedin ve içe aktarın.

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

7z / CAB / GZ / GZIP / RAR / TAR / ZIP - Aşağıdaki uzantılardan birine sahip dosyaları çift tıklattığınızda, Klasöre Ayıkla'yı varsayılan davranış olarak yapılandıran bir .reg dosyası. Aynı yaklaşımı kullanarak diğer dosya uzantıları için de yapabilirsiniz. ISO / VHD montajı için Windows varsayılan davranışını tercih ederim, bu yüzden bunu değiştirmedim ve 7-Zip, sık karşılaşmadığım birçok dosya türünü desteklediğinden, bunlar için değiştirmedim.

7-Zip Dosya Yöneticisi, Araçlar, Seçenekler'e gidip dosya ilişkilendirmelerini istediğiniz gibi değiştirerek bunu geri alabilirsiniz.

Windows 10 x64 / 7-Zip 15.12 x64 üzerinde test ettim. 7-Zip yolu için C: \ Program Files kullandığından, kesinlikle x64 Windows + x64 7-Zip'e ihtiyacınız var, ancak yalnızca Windows 10'da test ettim.

Öncekiyle aynı sağ tıklama seçeneklerine sahip olacaksınız, bu sadece çift tıkladığınızda ne olacağını değiştirir ve sadece bu yedi dosya türü için (yine, aynı yaklaşımı kullanan diğer dosya türleri için bunu yapabilirsiniz).

Bu adda bir klasör zaten varsa, normalde aldığınız aynı 7-Zip istemini verir, Evet / Evet Tümüne / Otomatik Yeniden Adlandır / Hayır / Hayır Herkese seçeneklerle.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.