Jak wyodrębnić wiele archiwów zawartych w podkatalogach w folderze, wyprowadzając wyniki z powrotem do folderów, w których znajdują się archiwa.
Jak wyodrębnić wiele archiwów zawartych w podkatalogach w folderze, wyprowadzając wyniki z powrotem do folderów, w których znajdują się archiwa.
Odpowiedzi:
Najpierw zainstaluj 7-zip .
Utwórz bat
plik w katalogu głównym katalogu zawierającego wiele podkatalogów z archiwami w środku. Następnie wklej następujące elementy:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd
)
Uruchom nietoperza, a wszystkie pliki rar / zamki zostaną rozpakowane do folderu, w którym się znajdują.
Jak to działa?
FOR / D / r %% F w („*”) DO (
Aby pętla przechodziła przez wszystkie foldery w bieżącym katalogu i wstawiała ścieżkę do zmiennej
%%F
.
pushd% CD%
Umieść bieżący katalog, w którym się znajdujemy, w pamięci.
cd %% F
Ustaw folder ze zmiennej
%%F
jako bieżący katalog.
FOR %%X in (*.rar *.zip) DO (
Dla wszystkich plików
rar
izip
w bieżącym folderze wykonaj:
"C:\Program Files\7-zip\7z.exe" x "%%X"
Uruchom 7-zip na plikach. Cytaty są potrzebne,
%%X
ponieważ niektóre nazwy plików mają spacje.
popd
Wróć do poprzedniego katalogu, który wcześniej zapisaliśmy w pamięci.
Mam nadzieję, że jest to przydatne dla kogoś.
Miałem problem z uruchomieniem skryptu z systemu Windows Vista. Kiedy uruchomiłem kod, nic się nie działo. Musiałem być administratorem, aby móc uruchomić skrypt. Kiedy kliknąłem prawym przyciskiem myszy plik .bat i „uruchomiłem jako administrator”, nie działało, ponieważ z jakiegoś powodu uruchomiono go w folderze system32 (jeśli dobrze pamiętam). Aby rozwiązać ten problem, po prostu użyj zmiennej środowiskowej systemu Windows (wyjaśnione tutaj: Zmienne środowiskowe systemu Windows )% ~ dp0, aby wrócić do katalogu, z którego skrypt został uruchomiony.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
Upewnij się, że żadne pliki * .rar lub * .zip nie znajdują się na tym samym poziomie co skrypt. Powinny być o jeden poziom niżej.
Mam nadzieję, że ten komentarz komuś pomógł.
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
Rozpoczyna wyszukiwanie rekurencyjne w bieżącym katalogu, znajduje wszystkie pliki z rozszerzeniem .zip, a następnie przesyła je do pętli. Dla każdego znalezionego pliku uruchamia polecenie rozpakuj plik, a dane wyjściowe przetaczane są do katalogu pliku.
Powyższe odpowiedzi działają jednak, jeśli używasz Windows 64-bit
i 7-Zip 32-bit
poprawna ścieżka jest C:\Program Files (x86)\7-Zip
dla 7-Zip. Poniżej znajduje się skrypt, który zadziałał dla mnie.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files (x86)\7-zip\7z.exe" x %%X
)
popd
)