Niestety metoda programu wsadowego afraziera nie działa; System Windows nie obsługuje otwierania wielu takich plików. Podczas próby otwarcia wielu plików za pomocą programu system Windows nie otwiera ani jednej instancji programu, ani nie przekazuje plików jako wielu argumentów do tej jednej instancji. Zamiast tego system Windows otwiera wiele instancji programu (tyle instancji, ile jest plików), przekazując jeden plik do każdej instancji. Byłoby miło, gdybyś mógł po prostu użyć% * i przekazać kilka plików do pojedynczego pliku .bat, i pozwolić, aby .bat uruchomił pętlę przetwarzającą każdy plik po jednym, ale niestety możesz użyć% 1 podczas ustawiania tych plików rodzaje działań w rejestrze.
Ktoś, kto ma trochę czasu, może napisać program, który używa obiektu mutex, aby sprawdzić, czy jest już uruchomiona inna instancja, a jeśli tak, przekazać jej plik do tej instancji, a następnie zamknąć, po czym instancja oryginalna umieści ten plik w kolejce i przejdź do niego po zakończeniu przetwarzania własnego pliku. partia może załatwić sprawę, używając, tasklist
i find
, ale to nie jest tak dobre rozwiązanie jak mutex.
W każdym razie wypróbuj to dla wartości rejestru polecenia wyodrębnienia, aby uzyskać właściwą nazwę folderu:
"\path\to\7z.exe" x "%1" -o* -aou
Spowoduje to utworzenie nowego folderu w tym samym katalogu co archiwum źródłowe o tej samej nazwie co archiwum źródłowe (bez rozszerzenia pliku).
Dodałem również -aou
przełącznik, aby automatycznie unikać konfliktów nazw plików (7z doda liczbę na końcu pliku, zamiast tego pytając, czy chcesz zastąpić czy cokolwiek innego).
-o*
, ale tylko wtedy, gdy w archiwum jest więcej niż jeden plik? Czy mogę zmusić go do wypakowania do bieżącego katalogu, jeśli w archiwum jest tylko jeden plik lub folder?"C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aou
zmiana 7zFM na 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
Ten wątek stał się nieco mylący z powodu sprzecznych odpowiedzi (zajęło mi sporo czasu, aby dowiedzieć się, które było właściwym rozwiązaniem), więc pomyślałem, że dobrym pomysłem może być podsumowanie wyników z postów afraziera i Justina Roettgera połączonych z moimi własnymi doświadczenie:
HKEY_CLASSES_ROOT\7-Zip.7z
Shell
podklucz(Default)
wartość na łańcuchextract
extract
(Default)
wartośćextract
klucza naExtract to Folder
extract
nazwącommand
(Default)
wartośćcommand
klucza na:(może być konieczne dostosowanie tego do ścieżki instalacji 7-Zip)
Zamiast 7z z opcją -aou jak Justin Roettger zasugerowałem, że skończyłem z użyciem 7zG, ponieważ w ten sposób możesz wybrać nadpisanie, jeśli chcesz po prostu wypakować z normalnym menu kontekstowym.
Otóż to! Pliki 7z są teraz wyodrębniane do folderu o własnej nazwie poprzez podwójne kliknięcie. W przypadku innych rozszerzeń, takich jak .rar i .zip, musisz powtórzyć te kroki dla odpowiednich kluczy. (tj. HKEY_CLASSES_ROOT \ 7-Zip.rar i HKEY_CLASSES_ROOT \ 7-Zip.zip i tak dalej)
Aha i wyjaśnienie: Działa również z wybranymi wieloma plikami. Nie potrzeba pliku wsadowego.
źródło
C:\Program Files\7-Zip\7zG.exe x "%1" -o*
i voila.Tools -> Options...
menu).Łatwa droga
Zainstaluj ExtractNow . Możesz go skonfigurować tak, aby robił dokładnie to, co chcesz.
Trudna droga
Ręczna modyfikacja rejestru w następujący sposób ...
Zacznij
regedit
jako administratorOtwórz
HKCR\.7z
i spójrz na(Default)
wartość. Zwróć uwagę na to, co to jest (w moim przypadku jako użytkownik PowerArchiver toPASZIP
)Przejdź do klucza rejestru
HKCR
o nazwie o tej nazwie. (w moim przypadkuHKCR\PASZIP
)Pod tym kluczem rozwiń
Shell
podkluczUstaw
(Default)
wartość na łańcuchextract
Utwórz nowy podklucz o nazwie
extract
Ustaw
(Default)
wartośćextract
klucza naExtract to Folder
Utwórz nowy podklucz pod
extract
nazwącommand
Ustaw
(Default)
wartośćcommand
klucza na(może być konieczne dostosowanie ścieżki)
Podziękowania dla Justina Roettgera za wskazanie poprawnej zmiennej nazwy potrzebnej do tego.
To powinno być to. Teraz pliki 7z są wyodrębniane do folderu o własnej nazwie podwójnym kliknięciem. W przypadku innych rozszerzeń, takich jak .rar i .zip, musisz powtórzyć te kroki dla odpowiednich kluczy.
Jeśli chcesz tylko wprowadzić zmiany na swoim koncie użytkownika zamiast całego systemu, zmień
HKCU\Software\Classes
zamiastHKCR
.HKCR
to klucz wirtualny będący połączeniemHKLM\Software\Classes
i wHKCU\Software\Classes
którym dane na Twoim koncie (HKCU) zastępują dane systemowe (HKLM). Zwykle uruchamianie programu regedit jako Administrator oznacza, że modyfikowanie HKCR zmienia dane systemowe w HKLM.Wyodrębnianie wielu plików
Oczywiście to nie zadziała, jeśli wybrano wiele plików. Jeśli chcesz, aby to działało, musisz utworzyć następujący plik wsadowy:
Teraz postępuj zgodnie z instrukcjami powyżej. W ostatnim kroku ustaw
(Default)
wartośćcommand
klucza naC:\Path\To\File.bat %*
Wszystkie modyfikacje rejestru nie są testowane z pamięci, ale powinny być poprawne.
źródło
%~dpn1
działa w skojarzeniach plików? (Nie ma go w systemie Windows XP. Zapomniałeś równieżx
o rozszerzeniu.)x
nazwy folderu wyjściowego. Jeśli chodzi o działanie ... To dobre pytanie."C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1"
nie dostałem żadnej korzyści z bieganiacmd.exe
, którą mogłem powiedzieć, a domyślne otwarcie 7-zip nie przeszkadzało. Jednak jest to po prostu rozpakowywanie%~dpn1
w tym samym folderze, co plik zip.\"%1.d\"
Daje \ filename.zip.d \ podkatalog w tym samym folderze co plik zip, więc jest bliżej, ale nie zdzierając rozszerzenia. Próbowałem hybryd tych dwóch, bez powodzenia. Jakieś inne sugestie?Oto skrypt PowerShell, który napisałem na podstawie odpowiedzi @ haiggoh. Zanim go uruchomisz, musisz otworzyć 7-zip, przejść do Narzędzia-> Opcje i powiązać 7-zip z pożądanymi rozszerzeniami plików. Następnie uruchom następujący skrypt PowerShell (z uprawnieniami administratora):
Oczywiście upewnij się, że
$7zInstallationFolder
zmienna zawiera poprawną ścieżkę do instalacji 7-zip.źródło
Przekaż parametry takie jak to:
Pamiętam skargi na Windows 7, które nie pozwalają na bezpośrednią edycję działań na plikach. Nie wiem, czy to prawda, czy nie ... ale jeśli tak, zapisz następujące jako
*.reg
plik i zaimportuj.źródło
Oto plik .reg, który konfiguruje Rozpakuj do folderu jako domyślne zachowanie po dwukrotnym kliknięciu plików z jednym z następujących rozszerzeń - 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Możesz to zrobić dla innych rozszerzeń plików, stosując to samo podejście. Wolę domyślne zachowanie systemu Windows w przypadku montażu ISO / VHD, więc nie zmieniłem tego, a 7-Zip obsługuje wiele innych typów plików, z którymi zwykle się nie spotykam, więc nie zmieniłem tego.
Możesz to cofnąć, przechodząc do Menedżera plików 7-Zip, Narzędzia, Opcje i odpowiednio zmieniając powiązania plików.
Testowałem na Windows 10 x64 / 7-Zip 15,12 x64. Ponieważ używa ścieżki C: \ Program Files jako ścieżki do 7-Zip, zdecydowanie potrzebujesz x64 Windows + x64 7-Zip, ale testowałem tylko na Windows 10.
Będziesz mieć takie same opcje kliknięcia prawym przyciskiem jak poprzednio, zmienia to tylko to, co dzieje się po dwukrotnym kliknięciu, i tylko dla tych siedmiu typów plików (ponownie, możesz to zrobić dla innych typów plików przy użyciu tego samego podejścia).
Jeśli istnieje już folder o tej nazwie, otrzymasz taki sam monit 7-Zip, jak zwykle, z opcjami Tak / Tak na wszystkie / Automatyczna zmiana nazwy / Nie / Nie dla wszystkich.
źródło