W folderze images\
mam następujące foldery:
Usa\
Italy\
Japan\
itp..
Chcę skrypt, który tworzy .zip
dla każdego z tych folderów, więc mam usa.zip
, italy.zip
, japan.zip
.
Jak mogę to zrobić?
W folderze images\
mam następujące foldery:
Usa\
Italy\
Japan\
itp..
Chcę skrypt, który tworzy .zip
dla każdego z tych folderów, więc mam usa.zip
, italy.zip
, japan.zip
.
Jak mogę to zrobić?
Odpowiedzi:
Zakładam, że jest to Windows, ponieważ używasz odwrotnych ukośników.
Pobierz 7za.exe (wersja 7-zip z linii poleceń ) i umieść go w swoim %PATH%
.
Następnie uruchom to w swoim Images\
katalogu:
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
Lub w skrypcie wsadowym:
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Zakładając, że jesteś w systemie Linux, możesz użyć skryptu Bash w następujący sposób:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Ten skrypt pobierze pierwszy argument jako folder, w tym przypadku obrazy, i przejdzie dokładnie jeden poziom w głąb, aby uzyskać wszystkie foldery (Usa, Włochy i Japonia) i spakować je w tym samym miejscu.
Nie usunie starych plików zip ani folderów źródłowych. Zip jest wystarczająco inteligentny, aby wykryć istniejące pliki zip i zaktualizować je po ponownym uruchomieniu. Jeśli jednak usuniesz plik z folderów źródłowych, nie zostanie on usunięty z plików zip. Możesz obejść to zachowanie, usuwając wcześniej istniejące pliki.
Możesz do tego użyć Winrar .
Wybierz wszystkie foldery, kliknij prawym przyciskiem myszy i wybierz Add to archive
. Teraz wybierz opcję Put each file to separate archive
pod zakładką Files
:
Kliknij OK i gotowe. Jeśli chcesz pliki .zip zamiast .rar, po prostu wybierz ZIP
na General
karcie poniżej Archive format
.
Ta odpowiedź przez mvg pracował dla mnie na Ubuntu:
Możesz użyć tej pętli w
bash
:for i in */; do zip -r "${i%/}.zip" "$i"; done
i
jest nazwą zmiennej pętli.*/
oznacza każdy podkatalog bieżącego katalogu i będzie zawierać końcowe ukośniki w tych nazwach. Upewnij się, że jesteścd
we właściwym miejscu przed wykonaniem tego."$i"
po prostu nazwij ten katalog, w tym ukośnik końcowy. Znaki cudzysłowu zapewniają, że białe spacje w nazwie katalogu nie spowodują problemów.${i%/}
jest jak,$i
ale z usuniętym końcowym ukośnikiem, więc możesz użyć tego do skonstruowania nazwy pliku zip.Jeśli chcesz zobaczyć, jak to działa, dołącz
echo
przedzip
i, a zobaczysz polecenia wydrukowane zamiast wykonanych.