Başka bir klasördeki her klasör için nasıl bir .zip dosyası oluşturabilirim?


18

Klasörün altında images\aşağıdaki klasörler var:

  • Usa\
  • Italy\
  • Japan\

vb..

Ben yaratan bir senaryo istiyorum .zipben bu yüzden, bu klasörlerin her biri için usa.zip, italy.zip, japan.zip.

Bunu nasıl yapabilirim?

Yanıtlar:


10

Ters eğik çizgi kullandığınız için bunun Windows olduğunu varsayıyorum.

Get 7za.exe (komut satırı sürümü 7-zip ) ve Gözlerinde farklı koydu %PATH%.

Ardından Images\dizininizde çalıştırın :

for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"

Veya toplu bir komut dosyasında:

for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"

Klasörlerin adlarında boşluk varsa bu çalışmaz.
jiggunjer

@jiggunjer Evet, haklısın. Klasör adlarındaki boşluklarla çalışmak için düzelttim.
paradroid

1
Bu normal 7zip yürütülebilir dosyalarda bile çalışır. 7za'yı "C: \ Program Files \ 7-Zip \ 7z.exe" olarak güncelledim ve sorunsuz çalıştı.
user1324161

8

Linux'ta olduğunuzu varsayarsak, böyle bir Bash betiği kullanabilirsiniz:

  #!/bin/bash

  IFS=$'\n'

  for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
    zip -r "$f" "$f"
  done

Bu komut dosyası ilk argümanı klasör, bu durumda görüntüler olarak alır ve tüm klasörlerinizi (ABD, İtalya ve Japonya) almak ve onları aynı yere sıkıştırmak için tam bir seviye derinlemesine alır.

Eski zip dosyalarını veya kaynak klasörleri silmez. Zip, mevcut zip dosyalarını algılayacak ve tekrar çalıştırıldığında güncellenecek kadar akıllıdır. Eğer kaynak klasörlerdeki bir dosyayı silmek Ancak, bu olmaz zip dosyaları silinecek. Bu davranışı önceden varolan dosyaları silerek atlatabilirsiniz.


Sponiro'nun gönderdiği Linux komut dosyasını kullandım ve klasörleri silmek için başlangıçta bir satır ekledim: $ 1 -type d | xargs rm
-rf

7

Bunun için Winrar'ı kullanabilirsiniz .

Tüm klasörlerinizi seçin, sağ tıklayın ve seçin Add to archive. Şimdi Put each file to separate archivesekmenin altındaki seçeneği seçin Files:

resim açıklamasını buraya girin

Tamam'ı tıkladığınızda işiniz bitti. .Rar yerine .zip dosyaları istiyorsanız ZIP, aşağıdaki Generalsekmeden seçin Archive format.


0

Bu cevap tarafından MVG Ubuntu benim için çalıştı:

Bu döngüyü şu alanlarda kullanabilirsiniz bash:

for i in */; do zip -r "${i%/}.zip" "$i"; done

idöngü değişkeninin adıdır. */geçerli dizinin her alt dizini anlamına gelir ve bu adlarda bir eğik çizgi içerir. Bunu cdgerçekleştirmeden önce doğru yere gittiğinizden emin olun . "$i"eğik çizgi de dahil olmak üzere bu dizini adlandırır. Tırnak işaretleri, dizin adındaki boşlukların soruna neden olmamasını sağlar. ${i%/}gibidir $iancak sondaki eğik çizgi kaldırıldığında, zip dosyasının adını oluşturmak için bunu kullanabilirsiniz.

Bunun nasıl çalıştığını görmek istiyorsanız, echoönüne bir ekleyin zip ve yürütülen yerine yazdırılan komutları görürsünüz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.