Oto wewnętrzny paker zip Total Commander:
Chcę jednak użyć mojego pakera 7zip. Kiedy wybieram 5 plików, otrzymuję 5 osobnych archiwów .zip dla każdego wybranego pliku. Jak to zrobić w 7zip?
Nie jestem pewien, czy możesz zrobić to, co sugerujesz za pomocą graficznego interfejsu użytkownika, ale z pewnością możesz to zrobić z wiersza poleceń:
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"
Najpierw musisz zmienić katalog ( cd
polecenie) na F:\Downloads
katalog lub inny katalog, w którym chcesz przeprowadzić masową kompresję. Ponadto łatwo jest zastąpić plik * .exe lub dowolne rozszerzenie, które chcesz filtrować, aby po prostu skompresować te dokumenty.
I sekretny dzwonek dekodera:
%i
jest zmienną, która przechowuje nazwę pliku dla każdego kroku w pętli(*.*)
to kryteria wyboru, może to być plik * .exe lub podobny7z.exe
to wersja 7-Zip w wierszu poleceń%~ni
- powoduje to rozszerzenie zmiennej% i tylko do nazwy pliku - bez rozszerzeniaJeśli chcesz tylko dodać foldery dla danego katalogu, polecenie jest nieco bardziej złożone, ponieważ domyślnie FOR działa tylko z plikami. Musimy podać kilka dodatkowych informacji:
FOR /F "usebackq delims=?" %i IN (`DIR /B /A:D`) DO 7z.exe a "%i.7z" "%i"
Działa to z powodu kilku elementów, które wydają się magiczne:
/F
mówi FOR, aby iterować po rozszerzonej wartości w ()usebackq
mówi ZA, że przekażę polecenie i użyję danych wyjściowych do iteracjidelims=?
mówi ZA, że chcę rozdzielić tokeny na ?
- niedozwolony znak w nazwach plików i katalogach. Chcę tylko jednego tokena./B
W DIR
jest dla formatu gołej - tylko nazwa/A:D
W DIR
to na ograniczenie wyniki według atrybutu, że D jest dla katalogówJeśli chcesz umieścić to w pliku wsadowym, jedyną zmianą, którą musisz wprowadzić, jest podwójne wyjście ze zmiennej% i:
FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"
Podoba mi się odpowiedź Goyuixa. Jeśli jednak używasz systemu Windows 7 (lub masz zainstalowany Power Shell), a także używasz wersji 7-zip 7za.exe z linii poleceń, możesz uruchomić to polecenie:
Możesz także zmienić „katalog” na „katalog * .exe”, aby wybrać tylko pliki wykonywalne.
Jedną fajną rzeczą w Power Shell jest to, że pracujesz z obiektami zamiast z łańcuchami. Więc możesz być naprawdę konkretny, jeśli chcesz. Na przykład:
Dotyczy to tylko plików, które:
EDYCJA Jeśli chcesz pliki zip zamiast 7-zip, użyj zip.exe InfoZip .
źródło
7z a -tzip archive.zip *.exe
Możesz pobrać i zainstalować wtyczkę 7zip dla Total Commander ze strony http://www.ghisler.com/plugins.htm Po wykonaniu tej czynności po prawej stronie okna na zrzucie ekranu pojawi się kolejny wybór kompresji 7zip. Dzięki tej opcji możesz osiągnąć dokładnie to, o co prosisz.
źródło
Właśnie pracowałem nad tym problemem i jednym z problemów, które znalazłem, było powielenie nazwy folderu w archiwum, tj. Podczas kompresji folderu o nazwie „foo”
.\foo\fighters.txt
tworzone jest archiwum zawierające zamiast jednego zawierającegofighters.txt
.Dlatego odpowiedzią jest przejście do przetwarzanego katalogu i wyświetlenie archiwum w poprzednim (głównym) katalogu, a następnie powrót do tego katalogu w celu przetworzenia następnego folderu.
Ważne jest również, aby program 7ZIP zignorował istniejące pliki ZIP i CMD w katalogu głównym, aby zapobiec ich przedostaniu się do archiwum, stąd argumenty
-x!*.zip
i-x!*.cmd
wykluczenia.Ten skrypt zachowa również rekurencyjne struktury folderów.
Powyższy kod należy skopiować do pliku wsadowego, takiego jak „katalog_kompresyjny. Cmd” i uruchomić jako administrator z katalogu zawierającego foldery, które chcesz skompresować.
Mam nadzieję że to pomoże.
źródło
Jeśli chcesz zachować strukturę folderów i zapisać każdy plik we własnej strukturze, spróbuj tego:
Zapisz to polecenie w pliku z rozszerzeniem .bat i umieść w folderze, który chcesz skompresować:
Uwaga:
-sdel: usuwa oryginalny plik (opcjonalnie, jeśli chcesz zachować tylko skompresowany plik)
źródło