7-zip & Windows 7: Thực hiện trích xuất mật khẩu thành <thư mục> Mặc định khi nhấp đúp chuột


15

Tôi đang cố gắng tìm cách thực hiện hành động bạn có thể thực hiện từ menu ngữ cảnh, "Trích xuất thành <folder_same_as_file_name>" hành động mặc định khi nhấp đúp vào tệp thay vì chỉ khởi chạy 7-zip. Có một cách đơn giản để làm điều này?

Ngoài ra, tôi tập hợp tôi có thể thử chuyển các tham số vào sau:

7z x <filename> -o<filename>

Nhưng tôi không chắc chắn làm thế nào để thiết lập điều này (làm thế nào để vượt qua tham số tên tệp và tôi có thể thực hiện việc này trực tiếp hay tôi sẽ phải viết một tệp bó thay thế và chuyển tên tệp cho nó? bất cứ việc gì

Câu trả lời:


4

Thật không may, phương pháp chương trình hàng loạt của afrazier sẽ không hoạt động; Windows không xử lý mở nhiều tệp như vậy. Khi bạn cố gắng mở nhiều tệp bằng một chương trình, Windows sẽ không mở một phiên bản duy nhất của chương trình và chuyển các tệp dưới dạng nhiều đối số cho một thể hiện đó. Thay vào đó, Windows mở nhiều phiên bản của chương trình (nhiều trường hợp có tệp), truyền một tệp cho mỗi phiên bản. Sẽ thật tuyệt nếu bạn chỉ có thể sử dụng% * và chuyển một loạt các tệp cho một .bat và để .bat chạy một vòng lặp xử lý từng tệp một, nhưng thật không may, bạn chỉ có thể sử dụng% 1 khi đặt các tệp này các loại hành động trong sổ đăng ký.

Ai đó có thời gian trên tay có thể viết chương trình sử dụng đối tượng mutex để kiểm tra xem có một phiên bản nào khác đang chạy hay không, và nếu có, để chuyển tệp của nó sang thể hiện đó và sau đó đóng lại, trong đó phiên bản gốc sẽ đặt tệp đó trong một hàng đợi và nhận được nó sau khi xử lý xong tệp của chính nó. một lô có thể thực hiện thủ thuật bằng cách sử dụng tasklistfind, nhưng đó không phải là một giải pháp tốt như mutex.

Dù sao, hãy thử điều này cho giá trị đăng ký lệnh trích xuất của bạn để có được tên thư mục đúng:

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

Điều này sẽ tạo một thư mục mới trong cùng thư mục với kho lưu trữ nguồn có cùng tên với kho lưu trữ nguồn (sans phần mở rộng tệp).

Ngoài ra, tôi đã thêm công -aoutắc để tự động tránh xung đột tên tệp (7z sẽ nối một số vào cuối tệp thay vì nhắc bạn xem bạn có muốn ghi đè hoặc bất cứ điều gì không).


Có cách nào để làm như -o*vậy không, nhưng chỉ khi có nhiều hơn một tệp trong kho lưu trữ? Như trong, tôi có thể làm cho nó giải nén vào thư mục hiện tại nếu chỉ có một tệp hoặc thư mục trong kho lưu trữ không?
NightExcessive

Mặc định trong Windows 10 là "C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aouthay đổi 7zFM thành 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
jsherk

12

Chủ đề này đã trở nên hơi khó hiểu vì các câu trả lời trái ngược nhau (tôi mất khá nhiều thời gian để tìm ra giải pháp nào phù hợp) vì vậy tôi nghĩ có thể nên tóm tắt kết quả từ các bài đăng của afrazier và Justin Roettger được kết hợp với chính tôi kinh nghiệm:

  1. Bắt đầu regedit với tư cách quản trị viên
  2. Mở HKEY_CLASSES_ROOT\7-Zip.7z
  3. Dưới khóa đó, mở rộng khóa Shellphụ
  4. Đặt (Default)giá trị cho chuỗiextract
  5. Tạo khóa phụ mới có tên extract
  6. Đặt (Default)giá trị cho extractkhóa thànhExtract to Folder
  7. Tạo một khóa phụ mới dưới extracttêncommand
  8. Đặt (Default)giá trị của commandkhóa thành:

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

(bạn có thể phải điều chỉnh điều này để phù hợp với đường dẫn cài đặt 7-Zip của bạn)

Thay vì 7z với -aou như Justin Roettger đề nghị tôi đã kết thúc bằng 7zG, bởi vì cách này bạn có thể chọn ghi đè nếu bạn thích giống như trích xuất với menu ngữ cảnh thông thường.

Đó là nó! Các tệp 7z hiện được trích xuất vào một thư mục có tên riêng bằng cách nhấp đúp. Đối với các tiện ích mở rộng khác như .rar và .zip, bạn cần lặp lại các bước này cho các phím theo. (ví dụ: HKEY_CLASSES_ROOT \ 7-Zip.rar và HKEY_CLASSES_ROOT \ 7-Zip.zip, v.v.)

Oh và để làm rõ: Nó cũng hoạt động với nhiều tệp được chọn. Không cần tập tin lô.


1
Tôi không thấy đường dẫn đăng ký đó. Tôi đang dùng Windows 8 w / 64-bit 7zip.
phillipwei

Rất nhiều thứ đã thay đổi kể từ bài đăng này, nhưng nó vẫn hoạt động rất tốt ... đối với tôi, nó dưới 7z_auto_file, không phải 7-Zip.7z. Tất cả những gì tôi đã làm là thay đổi "lệnh" hiện có thành C:\Program Files\7-Zip\7zG.exe x "%1" -o*và voila.
neokio

Trên Windows 10, tôi cũng không thấy đường dẫn cho đến khi tôi liên kết ít nhất một tệp với 7-Zip trong Trình quản lý tệp 7-Zip (thông qua Tools -> Options...menu).
Chris Nolet

Bất cứ ai cũng biết tại sao điều này không còn hoạt động trên Windows 10? Các đường dẫn có vẻ giống nhau, nhưng tôi chỉ nhận được một cửa sổ giao diện điều khiển màu đen đóng lại ngay lập tức và không có gì được trích xuất. Đã thử tất cả các phương pháp trong chủ đề này.
Ryan Weiss

5

Cách dễ dàng

Cài đặt ExtractNow . Bạn có thể cấu hình nó để làm chính xác những gì bạn muốn.


Con đường gian nan

Sửa đổi sổ đăng ký thủ công như sau ...

  • Bắt đầu regeditvới tư cách quản trị viên

  • Mở HKCR\.7zvà nhìn vào (Default)giá trị. Hãy lưu ý đó là gì (trong trường hợp của tôi, với tư cách là người dùng PowerArchiver, thì nó PASZIP)

  • Đi đến khoá đăng ký HKCRcó tên đó. (trong trường hợp của tôi HKCR\PASZIP)

  • Dưới khóa đó, mở rộng khóa Shellphụ

  • Đặt (Default)giá trị cho chuỗiextract

  • Tạo khóa phụ mới có tên extract

  • Đặt (Default)giá trị cho extractkhóa thànhExtract to Folder

  • Tạo một khóa phụ mới dưới extracttêncommand

  • Đặt (Default)giá trị của commandkhóa thành

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

    (bạn có thể phải điều chỉnh đường dẫn)

Cảm ơn Justin Roettger đã chỉ ra biến tên chính xác cần thiết cho việc này.

Đó nên là nó. Bây giờ các tệp 7z được trích xuất vào một thư mục có tên riêng bằng cách nhấp đúp. Đối với các tiện ích mở rộng khác như .rar và .zip, bạn cần lặp lại các bước này cho các phím theo.

Nếu bạn chỉ muốn thực hiện các thay đổi trên tài khoản người dùng của mình thay vì toàn hệ thống, hãy sửa đổi HKCU\Software\Classesthay vì HKCR. HKCRlà một khóa ảo liên kết HKLM\Software\ClassesHKCU\Software\Classesnơi dữ liệu trong tài khoản của bạn (HKCU) ghi đè dữ liệu trên toàn hệ thống (HKLM). Thông thường chạy regedit với tư cách Quản trị viên có nghĩa là sửa đổi HKCR làm thay đổi dữ liệu toàn hệ thống trong HKLM.


Trích xuất nhiều tập tin

Tất nhiên, điều này sẽ không hoạt động nếu bạn có nhiều tệp được chọn. Nếu bạn muốn nó hoạt động, bạn cần tạo tệp bó sau:

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

Bây giờ, hãy làm theo các hướng dẫn ở trên. Ở bước cuối cùng, đặt (Default)giá trị của commandkhóa thànhC:\Path\To\File.bat %*

Tất cả các sửa đổi đăng ký không được kiểm tra từ bộ nhớ, nhưng phải chính xác.


%~dpn1làm việc trong các hiệp hội tập tin? (Nó không có trong Windows XP. Ngoài ra, bạn đã quên xmở rộng.)
user1686 18/03/11

1
@grawity: Bạn không muốn xtên thư mục đầu ra. Đối với nó hoạt động ... Đó là một câu hỏi hay. Tôi sẽ chỉnh sửa thành địa chỉ ...
afrazier 18/03/2016

Hừm, điểm tốt.
dùng1686

Rất gần, nhưng không hoàn toàn ở đó. Sau khi chơi với mã cả afrazier và grawity được cung cấp, tôi có giá trị khóa mặc định được đặt vì "C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1" tôi không nhận được bất kỳ lợi ích nào từ việc chạy cmd.exemà tôi có thể biết, và mở mặc định của 7-zip không bận tâm đến nó. Tuy nhiên, đây chỉ là giải nén %~dpn1trong cùng thư mục với tệp zip. Thư \"%1.d\"mục con cung cấp một \ filename.zip.d \ trong cùng thư mục với tệp zip, vì vậy nó gần hơn, nhưng không tước bỏ phần mở rộng. Tôi đã thử lai giữa hai loại, không có may mắn. Bất cứ một đề nghị nào khác?
di chuyển

Bạn có thể sẽ phải sử dụng một tập tin hàng loạt.
afrazier

2

Đây là kịch bản PowerShell tôi đã viết dựa trên câu trả lời của @ haiggoh. Trước khi chạy, bạn cần mở 7-zip, đi đến Công cụ-> Tùy chọn và liên kết 7-zip với các phần mở rộng tệp mong muốn. Sau đó, chạy tập lệnh PowerShell sau (có quyền quản trị viên):

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

Tất nhiên, đảm bảo rằng $7zInstallationFolderbiến đó chứa đường dẫn chính xác đến cài đặt 7-zip của bạn.


Làm thế nào để hoàn nguyên nó? Tôi gỡ cài đặt và cài đặt lại không hoạt động
Oliveras

@Lombas thử liên kết lại 7-zip với các tiện ích mở rộng đó, nếu nó không hoạt động, hãy xóa các khóa đăng ký và thử lại.
xx77aBs

liên kết 7-zip một lần nữa với các phần mở rộng hoạt động. Cảm ơn rât nhiều!
Oliveras

0

Truyền tham số như thế này:

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

Tôi nhớ lại các khiếu nại về việc Windows 7 không cho phép chỉnh sửa trực tiếp các hành động của tệp. Tôi không biết điều này có đúng hay không ... nhưng nếu có, hãy lưu các mục sau dưới dạng *.regtệp và nhập tệp.

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

Dưới đây là tệp .reg định cấu hình Trích xuất vào thư mục dưới dạng hành vi mặc định khi nhấp đúp vào tệp với một trong các tiện ích mở rộng sau - 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Bạn có thể làm điều đó cho các phần mở rộng tập tin khác bằng cách sử dụng cùng một cách tiếp cận. Tôi thích hành vi mặc định của Windows để gắn ISO / VHD, vì vậy tôi đã không thay đổi điều đó và 7-Zip hỗ trợ nhiều loại tệp khác mà tôi không thường gặp vì vậy tôi đã không thay đổi nó cho những loại đó.

Bạn có thể hoàn nguyên điều này bằng cách vào Trình quản lý tệp 7-Zip, Công cụ, Tùy chọn và thay đổi liên kết tệp theo ý muốn.

Tôi đã thử nghiệm trên Windows 10 x64 / 7-Zip 15.12 x64. Vì nó sử dụng C: \ Program Files cho đường dẫn đến 7-Zip, nên bạn chắc chắn cần x64 Windows + x64 7-Zip, nhưng tôi chỉ thử nghiệm trên Windows 10.

Bạn sẽ có các tùy chọn nhấp chuột phải như trước đây, điều này chỉ thay đổi những gì xảy ra khi bạn nhấp đúp và chỉ với bảy loại tệp đó (một lần nữa, bạn có thể làm điều này cho các loại tệp khác bằng cách sử dụng cùng một cách tiếp cận).

Nếu đã có một thư mục có tên đó, nó sẽ cung cấp cho bạn cùng một dấu nhắc 7-Zip mà bạn nhận được bình thường, với các tùy chọn cho Có / Có cho Tất cả / Tự động đổi tên / Không / Không cho Tất cả.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.