7-zip & Windows 7: Jadikan "Extract to <folder>" default pada klik dua kali

15

Saya mencoba menemukan cara untuk membuat tindakan yang dapat Anda lakukan dari menu konteks, "Ekstrak ke <folder_same_as_file_name>" tindakan default ketika mengklik dua kali file alih-alih hanya meluncurkan 7-zip. Apakah ada cara sederhana untuk melakukan hal ini?

Sebagai alternatif, saya mengumpulkan saya bisa mencoba melewati parameter ke berikut ini:

7z x <filename> -o<filename>

Tapi saya tidak yakin bagaimana cara mengaturnya (bagaimana cara melewatkan parameter nama file, dan dapatkah saya melakukan ini secara langsung atau saya harus menulis file batch sebagai gantinya dan meneruskan nama file itu? Yang belakangan saya anggap tidak sopan, tetapi apapun yang berhasil.

Schodge
sumber

Jawaban:

4

Sayangnya, metode program batch afrazier tidak akan berfungsi; Windows tidak menangani membuka banyak file seperti itu. Ketika Anda mencoba untuk membuka banyak file dengan suatu program, Windows tidak membuka satu instance dari program dan meneruskan file sebagai beberapa argumen untuk satu contoh itu. Sebagai gantinya, Windows membuka banyak instance dari program (sebanyak jumlah sebanyak file), meneruskan satu file ke setiap instance. Akan lebih baik jika Anda hanya bisa menggunakan% * dan meneruskan banyak file ke .bat tunggal, dan minta .bat menjalankan loop memproses setiap file satu per satu, tetapi sayangnya Anda hanya dapat menggunakan% 1 saat mengatur ini jenis tindakan dalam registri.

Seseorang dengan beberapa waktu di tangan mereka dapat menulis sebuah program yang menggunakan objek mutex untuk memeriksa apakah ada instance lain yang sudah berjalan, dan jika ada, untuk meneruskan file ke instance itu dan kemudian tutup, dimana instance aslinya akan meletakkan file itu dalam antrian dan sampai setelah selesai memproses file sendiri. sebuah batch bisa melakukan trik menggunakan tasklistdan findjuga, tapi itu tidak sebagus solusi seperti mutex.

Bagaimanapun, coba ini untuk nilai registri perintah ekstrak Anda untuk mendapatkan nama folder yang tepat:

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

Ini akan membuat folder baru di direktori yang sama dengan arsip sumber dengan nama yang sama dengan arsip sumber (tanpa ekstensi file).

Juga, saya menambahkan -aousaklar untuk secara otomatis menghindari konflik nama file (7z akan menambahkan nomor ke akhir file, bukan meminta Anda apakah Anda ingin menimpa atau apa pun).

Justin Roettger
sumber
Apakah ada cara untuk melakukannya -o*, tetapi hanya jika ada lebih dari satu file dalam arsip? Seperti dalam, dapatkah saya membuatnya mengekstrak ke direktori saat ini jika hanya ada satu file atau folder dalam arsip?
NightExcessive
Default pada Windows 10 adalah "C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aoubegitu mengubah 7zFM menjadi hanya 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk
12

Utas ini menjadi sedikit membingungkan karena bertentangan dengan jawaban (butuh beberapa waktu untuk mencari tahu solusi mana yang tepat) jadi saya pikir mungkin ide yang bagus untuk merangkum hasil dari posting afrazier dan Justin Roettger yang dikombinasi dengan jawaban saya sendiri. pengalaman:

  1. Mulai regedit sebagai administrator
  2. Buka HKEY_CLASSES_ROOT\7-Zip.7z
  3. Di bawah kunci itu, perluas Shellsub-kunci
  4. Tetapkan (Default)nilai ke stringextract
  5. Buat sub-kunci baru dengan nama extract
  6. Tetapkan (Default)nilai untuk extractkunciExtract to Folder
  7. Buat sub-kunci baru dengan extractnamacommand
  8. Setel (Default)nilai commandkunci ke:

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

(Anda mungkin harus menyesuaikan ini agar sesuai dengan jalur pemasangan 7-Zip Anda)

Alih-alih 7z dengan -Anda seperti Justin Roettger menyarankan saya akhirnya menggunakan 7zG, karena dengan cara ini Anda dapat memilih untuk menimpa jika Anda suka seperti mengekstraksi dengan menu konteks normal.

Itu dia! File 7z sekarang diekstraksi ke folder dengan nama mereka sendiri dengan klik dua kali. Untuk ekstensi lain seperti .rar dan .zip Anda harus mengulangi langkah-langkah ini untuk tombol yang sesuai. (yaitu HKEY_CLASSES_ROOT \ 7-Zip.rar dan HKEY_CLASSES_ROOT \ 7-Zip.zip dan sebagainya)

Oh dan untuk memperjelas: Ini berfungsi dengan beberapa file yang dipilih juga. Tidak perlu file batch.

haiggoh
sumber
1
Saya tidak melihat jalur registri itu. Saya menggunakan Windows 8 w / 64-bit 7zip.
phillipwei
Banyak yang telah berubah sejak posting ini, tetapi masih berfungsi dengan baik ... bagi saya, masih di bawah 7z_auto_file, bukan 7-Zip.7z. Yang saya lakukan hanyalah mengubah "perintah" yang ada menjadi C:\Program Files\7-Zip\7zG.exe x "%1" -o*dan voila.
neokio
Pada Windows 10, saya juga tidak melihat jalan sampai saya menghubungkan setidaknya satu file dengan 7-Zip di 7-Zip File Manager (via Tools -> Options...menu).
Chris Nolet
Adakah yang tahu mengapa ini tidak lagi berfungsi pada Windows 10? Jalannya tampaknya sama, tapi saya hanya mendapatkan jendela konsol hitam yang segera menutup, dan tidak ada yang diekstraksi. Mencoba semua metode di utas ini.
Ryan Weiss
5

Cara mudah

Instal ExtractNow . Anda dapat mengkonfigurasinya untuk melakukan apa yang Anda inginkan.


Cara yang sulit

Modifikasi registri manual sebagai berikut ...

  • Mulai regeditsebagai administrator

  • Buka HKCR\.7zdan lihat (Default)nilainya. Perhatikan apa itu (dalam kasus saya, sebagai pengguna PowerArchiver, itu PASZIP)

  • Pergi ke kunci registri di HKCRberi nama itu. (dalam kasus saya HKCR\PASZIP)

  • Di bawah kunci itu, perluas Shellsub-kunci

  • Tetapkan (Default)nilai ke stringextract

  • Buat sub-kunci baru dengan nama extract

  • Tetapkan (Default)nilai untuk extractkunciExtract to Folder

  • Buat sub-kunci baru dengan extractnamacommand

  • Setel (Default)nilai commandkunci ke

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

    (Anda mungkin harus menyesuaikan jalurnya)

Terima kasih kepada Justin Roettger karena menunjukkan variabel nama yang benar yang diperlukan untuk ini.

Seharusnya begitu. Sekarang 7z file diekstraksi ke folder dengan nama mereka sendiri dengan klik dua kali. Untuk ekstensi lain seperti .rar dan .zip Anda harus mengulangi langkah ini untuk tombol yang sesuai.

Jika Anda hanya ingin membuat perubahan pada akun pengguna Anda alih-alih seluruh sistem, modifikasi HKCU\Software\Classesbukan HKCR. HKCRadalah kunci virtual yang merupakan gabungan dari HKLM\Software\Classesdan di HKCU\Software\Classesmana data dalam akun Anda (HKCU) menimpa data seluruh sistem (HKLM). Biasanya menjalankan regedit sebagai Administrator berarti memodifikasi HKCR mengubah data seluruh sistem di HKLM.


Mengekstrak banyak file

Tentu saja, ini tidak akan berhasil jika Anda memiliki beberapa file yang dipilih. Jika Anda ingin itu berfungsi, Anda perlu membuat file batch berikut:

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

Sekarang, ikuti instruksi di atas. Pada langkah terakhir, atur (Default)nilai commandkunciC:\Path\To\File.bat %*

Semua modifikasi registri tidak teruji dari memori, tetapi harus benar.

afrazier
sumber
Apakah %~dpn1bekerja di asosiasi file? (Tidak di Windows XP. Selain itu, Anda lupa xekstensi.)
user1686
1
@grawity: Anda tidak ingin xnama folder keluaran. Adapun itu berfungsi ... Itu pertanyaan yang bagus. Saya akan mengedit ke alamat ...
afrazier
Hm, poin bagus.
user1686
Begitu dekat, tetapi belum sampai di sana. Setelah bermain dengan kode yang lebih afrazier dan grawity yang disediakan, saya memiliki nilai kunci default yang ditetapkan karena "C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" saya tidak mendapatkan manfaat dari menjalankan cmd.exeyang bisa saya katakan, dan 7-zip terbuka standar tidak repot dengan itu. Namun, ini hanya membuka ritsleting ke %~dpn1dalam folder yang sama dengan file zip. Subtitle tersebut \"%1.d\"memberikan subdirektori \ filename.zip.d \ dalam folder yang sama dengan file zip, sehingga lebih dekat, tetapi tidak menghilangkan ekstensi. Saya sudah mencoba hibrida keduanya, tidak berhasil. Ada saran lain?
schodge
Anda mungkin harus menggunakan file batch.
Afrazier
2

Inilah skrip PowerShell yang saya tulis berdasarkan jawaban @ haiggoh. Sebelum Anda menjalankannya, Anda perlu membuka 7-zip, buka Tools-> Options dan kaitkan 7-zip dengan ekstensi file yang diinginkan. Setelah itu, jalankan skrip PowerShell berikut (dengan hak admin):

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

Tentu saja, pastikan $7zInstallationFoldervariabel itu berisi jalur yang benar ke instalasi 7-zip Anda.

xx77aBs
sumber
Bagaimana cara mengembalikannya? Saya mencopot dan menginstal ulang tidak berfungsi
Lombas
@Lombas mencoba mengaitkan 7-zip lagi dengan ekstensi tersebut, jika tidak berhasil hapus kunci registri dan coba lagi.
xx77aBs
mengaitkan 7-zip lagi dengan ekstensi berfungsi. Terima kasih banyak!
Lombas
0

Lewati parameter seperti ini:

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

Saya ingat pernah mendengar keluhan tentang Windows 7 yang tidak memungkinkan untuk langsung mengedit tindakan file. Saya tidak tahu apakah ini benar atau tidak ... tetapi jika benar, simpan yang berikut sebagai *.regfile dan impor.

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\""
pengguna1686
sumber
0

Berikut adalah file .reg yang mengonfigurasi Ekstrak ke folder sebagai perilaku default saat mengklik dua kali file dengan salah satu ekstensi berikut - 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Anda bisa melakukannya untuk ekstensi file lainnya menggunakan pendekatan yang sama. Saya lebih suka perilaku standar Windows untuk pemasangan ISO / VHD, jadi saya tidak mengubahnya, dan 7-Zip mendukung banyak jenis file lain yang tidak biasa saya temui jadi saya tidak mengubahnya untuk itu.

Anda dapat mengembalikan ini dengan masuk ke 7-Zip File Manager, Tools, Options, dan mengubah asosiasi file yang diinginkan.

Saya menguji pada Windows 10 x64 / 7-Zip 15.12 x64. Karena menggunakan C: \ Program Files untuk jalur ke 7-Zip, Anda pasti perlu x64 Windows + x64 7-Zip, tapi saya hanya menguji pada Windows 10.

Anda akan memiliki opsi klik kanan yang sama seperti sebelumnya, ini hanya mengubah apa yang terjadi ketika Anda mengklik dua kali, dan hanya untuk tujuh jenis file (sekali lagi, Anda bisa melakukan ini untuk jenis file lain menggunakan pendekatan yang sama).

Jika sudah ada folder dengan nama itu, itu akan memberi Anda 7-Zip prompt yang Anda dapatkan secara normal, dengan opsi untuk Ya / Ya untuk Semua / Ubah Nama Otomatis / Tidak / Tidak untuk Semua.

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
sumber