Czy istnieje sposób na kompresowanie pojedynczych folderów za pomocą 7zip na dużej kolekcji folderów?


0

W jaki sposób 260 folderów można spakować indywidualnie za pomocą 7zip za pomocą jednego polecenia?

Osoba, która pierwotnie zadała to pytanie, dobrowolnie usunęła post. Ponieważ było to interesujące zadanie, wskrzesiłem pytanie i opracowałem rozwiązanie, które zamieszczono poniżej jako odpowiedź.

Odpowiedzi:


1

Działa to dla plików, a nie dla podfolderu w folderze nadrzędnym http://dropcanvas.com/w7u6a/3

http://dropcanvas.com/w7u6a/3

@echo off
cd /d %~dp0
rem 7z.exe path
set sevenzip=
if "%sevenzip%"=="" if exist "%ProgramFiles(x86)%\7-zip\7z.exe" set sevenzip=%ProgramFiles(x86)%\7-zip\7z.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%\7-zip\7z.exe" set sevenzip=%ProgramFiles%\7-zip\7z.exe
if "%sevenzip%"=="" echo 7-zip not found&pause&exit
set extension=.mp4
for %%a in (*%extension%) do "%sevenzip%" a "%%~na.7z" "%%a"
pause
[/CODE]

1

Napisz to w ten sposób i nie będzie żadnych problemów.

7z a  -t7z "c:\users\user\desktop\folder\%%G.7z" c:\users\user\desktop\folder\%%G -r

0

Oto skrypt, który to zrealizuje (pomiń komentarze „//”, które są wyświetlane w celu wyjaśnienia):

@echo off
for /D %%G IN (*) DO (
    //This is my path to 7-Zip, it could be different for you
cd c:\program files\7-zip
    //This is the dir of the parent folder in which you want the subfolders to be zipped individually.
7z a  -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )
pause

-t7z to używany format archiwum .7z.

Aby użyć skryptu:

Sposób pisania skryptu zakłada, że ​​masz folder nadrzędny z podkatalogiem, który chcesz indywidualnie rozpakować (każdy podkatalog we własnym archiwum zip).

Reprezentacja wizualna:

----Parent Directory
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)

Powiedzmy, że podkatalogi, które chcesz rozpakować, znajdują się w C:\Users\Foo\Documents. Wyglądałoby to tak:

----C:\Users\Foo\Documents
--------Foo1
--------Foo2
--------Foo3
--------Foo4
--------Foo5

Więc w dostarczonym skrypcie edytowałbyś linię:

7z a  -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )

powiedzieć:

7z a  -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )

Teraz musimy ustawić naszą lokalizację 7z.exe, aby skrypt mógł działać poprawnie.

UWAGA: Nie musisz tego robić, jeśli uda ci się ustawić zmienną środowiskową dla 7z.exe. Dla tych, którzy odniosą sukces, pomiń linię cd c:\program files\7-zip. Aby sprawdzić, czy działa, czy nie, po prostu otwórz cmd.exe i wpisz 7z, jeśli otrzymasz listę opcji i parametrów, to zadziałało, a jeśli nie, kontynuuj cd dowództwo.

Znajdź miejsce, w którym zainstalowano 7-Zip i skopiuj katalog i dodaj go po cd. W tym przykładzie zostanie zainstalowany w C:\Program Files\7-Zip. Tak więc gotowy skrypt będzie wyglądał tak:

@echo off
for /D %%G IN (*) DO (
cd C:\Program Files\7-Zip
7z a  -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )
pause

teraz zapisz skrypt jako .bat rozszerzenie pliku, jeśli używasz notatnika, musisz zmienić Save as Type do All Files (".").

Jeśli napisany poprawnie, wynik końcowy powinien wyglądać następująco: Result

UWAGA: Jeśli masz foldery, które mają spacje, nie będą wypisywać całej nazwy, ale pierwsze słowo przed spacją. Dawny: Foo 1 zostanie zarchiwizowany jako Foo.7z (brak bueno). To samo z więcej niż jednym folderem z pierwszym słowem jako Foo i Foo 1, oboje natrafiają na ostatni problem, który wyjaśniłem i kiedy Foo jest najpierw archiwizowany, archiwum dla Foo 1 spróbuje nadpisać Foo ponieważ mają tę samą nazwę. Jeśli możesz znaleźć pracę wokół, Kudos to dla ciebie!

Możesz także spróbować wersji mojego skryptu Tylera, oczywiście, że jest on bardziej „uniwersalnie kompatybilny” i wymaga posiadania 7z.exe jako E.V. (Zmienna środowiskowa).


Czy możesz dodać zdanie do odpowiedzi na temat korzystania ze skryptu?
fixer1234

Zaktualizowano to dla ciebie :)
xR34P3Rx

Dobra robota. Już odpowiedziałem na twoje pytanie i odpowiedź.
fixer1234

Potrzebujesz cytatów dookoła C:\Program Files\7-Zip lub skrypt przejdzie do c: program

To mi się nigdy nie przytrafia. Spróbowałeś?
xR34P3Rx
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.