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:
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).