Birden fazla klasörü tek tek zip dosyalarına toplu olarak sıkıştırın


12

Bireysel zip dosyalarına sıkıştırmam gereken onlarca klasörüm var.

Finder'da bu klasörlerin tümünü seçip "[X] Öğeleri Sıkıştır" ı seçersem, tüm klasörleri içeren bir zip dosyası alırken, istediğim klasör başına bir zip dosyası olur .

"Arşiv Oluştur" eylemini kullanarak Automator ile bir iş akışı oluşturmayı denedim, ancak aynı şekilde davranıyor: birden çok dosya / klasör girmek tek bir zip dosyası çıktılar. Eylemin her bir öğe üzerinde ayrı ayrı yürütüleceğini belirtmenin bir yolu yoktur.

Temel olarak, her seferinde tek bir klasörde Finder'da "Sıkıştır" ı sıkmak zorunda kalmamak için bir yol arıyorum. Bunu otomatikleştirmenin bir yolu var mı?


1
Zip arşiv dosya adını artırmak için kullanılan kodu geliştirmek için cevabımı güncelledim, böylece Finder bağlam-menüsü Sıkıştır [n] Öğeler komutunun bir dosya adını nasıl artırdığını öykünür.
user3439894

Üzgünüz, gereksiz olanı kaldırmak için kodu bir kez daha güncelledim ve olması gereken popdönemli bir yazım hatasını düzelttim . Arasındaki boşluğu Not ve o eksikti ve olmamalıydı. Bu yüzden lütfen uygulamanızda güncelleyin, aksi takdirde içinde bir boşluk olduğunda adım atar . for i in $bn*.zip; dofor i in $bn *.zip; do$bn*.zipFile Name 2.zipbasename
user3439894

Yanıtlar:


14

İşte bir olduğunu Otomatikleştirici Hizmet 1 kullanılabilir hale gelir Finder zaman Klasörler seçilir ve emüle bağlam menüleri [n] Öğeler sıkıştır komuta dışında bir oluşturur bireysel zip arşiv dosyası seçilen her için Klasör içinde adının seçilen Klasör . Eğer Klasör Name.zip dosyası zaten daha sonra mevcut " 2"( boşluk 2) eklenir dosya , örneğin Klasör Adı 2.zip . Bu, mevcut bir zip arşiv dosyasını sağlardokunulmaz ve zip arşivi dosya adı gerektiğinde otomatik olarak artırılır.

1 yılında MacOS Mojave ve daha sonra, bir Otomatikçisi Servisi bir denir Hızlı Eylem . Başka küçük isimlendirme farklılıkları da vardır, ancak bunları macOS öncesi Mojave Automator iş akışlarıyla karşılaştırırken daha açık olmalıdır.

Hizmeti Oluşturmak için: 1

  1. Açık Otomatikleştirici basıp Servis 1 veya Dosya > Yeni > Servis Eğer Otomatikleştirici zaten açık.

  2. Set Servis seçilen aldığı için klasörlere ve içinde hiç Finder .

  3. Bir ekleme Run Shell Senaryo Eylem ayarı, : Shell için / bin / bash ve : Geçiş girişi için bağımsız değişkenleri olarak ve aşağıdakileri ekleyin kod :

    for f in "$@"; do
    
        dn="$(dirname "$f")"
        bn="$(basename "$f")"
    
        cd "$dn" || exit
    
        if [[ ! -e "$bn.zip" ]]; then
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn.zip"
        else
            n=2
            for i in $bn *.zip; do
                if [[ "$bn $n.zip" == "$i" ]]; then
                    n="$(( n + 1 ))"
                fi
            done
            ditto -c -k --sequesterRsrc --keepParent "$f" "$bn $n.zip"
        fi
    
    done
    
    afplay /System/Library/Sounds/Purr.aiff
    
  4. Hizmeti Farklı Kaydet : Klasörleri Ayrı Ayrı Sıkıştır

Hizmeti Kullanmak için:

In Finder veya Masaüstü birden seçmek Klasörler , ardından sağ tıklayın ve seçin sıkıştır Klasörler Ayrı altından Services .

Veya hedef Klasörleri seçtikten sonra , menü çubuğundan Bulucu > Hizmetler > Klasörleri Sıkıştır'ı da tıklatabilirsiniz .

Burada, Finder'ın zip arşiv dosyasını nasıl oluşturduğunu taklit ederken, tek tek zip arşivlerinde birden fazla klasörü ayrı ayrı ve aynı anda sıkıştırmanın bir yolu var. Zip arşivi Anlamı alt dizin __MACOSX korunmuş kaynak çatal ve HFS meta verileri içerir ve yalnızca üst dizin adı gömer kaynağı içinde hedef-arşivde , kullanırken olarak değil tam yol adı zip(olmadan -jarşiv oluşturmak için).

Sıkıştırılmış Klasörlerin Resmi Ayrı Ayrı

Klasörleri Ayrı Ayrı Sıkıştır - Automator Service


Hem çözümünüzü hem de @ ababak'ın çözümünü kontrol ettim. Aynı sonucu veriyorlar ve ababak'ın uygulanması çok daha kolay. Zaten ikisine de oy verdim.
turzifer

15

Automator'ı kullanmak istemiyorsanız ve Archive Utility'nin ayarlarını değiştirmede sorun yaşıyorsanız yerleşik olan alternatif bir çözüm var.

  1. / System / Library / CoreServices / Applications / dizininde bulunan Archive Utility.app dosyasını açın.
  2. Dosya> Tercihler'e gidin
  3. "Arşiv Formatını Kullan" tercihini "Zip arşivi" olarak değiştirin
  4. Klasörleri dock'taki simgesine sürükleyip bırakın.

Bu seçenekle ilgili güzel olan şey, orijinali bittikten sonra çöp kutusuna taşımak için Archive Utility.app tercihlerini ayarlamanızdır, klasörlerle sınırlı değildir. Seçenek olarak sağ tıklatmak istiyorsanız, bir hizmet olarak Archive Utility.app ile açılacak bir Automator hizmeti kurmanın bir yolu var mı? Archive Utility.app Uygulamayı Başlat eylemi kullanılarak seçilemediğinden bir sınırlamaya girdim.
thepen

@thepen, tabii ki Uygulama Eylemini Başlat olarak Arşiv Yardımcı Programını seçebilirsiniz. Sadece "Diğer…" i seçmeniz ve konumuna gitmeniz gerekir /System/Library/CoreServices/Applications/(hızlı gezinme için bu yolu yapıştırmak için dosya seçme iletişim kutusu açıkken Cmd-Shift-G tuşlarına basabilirsiniz)
ababak

'arşiv biçimi' ve 'zip arşivi' arasındaki fark nedir?
Kullanıcı1993

Bu yöntem çok daha kolay bir iş akışıdır. Komutu denedim: * içindeki öğe için; zip "$ {item} .zip" "$ {item}" yap; terminalde yapılır ama doğru çalışmadı. Neden olduğu bilinmiyor ama anlamak için zaman ayırmak istemedim. Bu iyi çalıştı.
ArchonOSX
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.