Batch comprime più cartelle in singoli file zip

8

Ho decine di cartelle che devo comprimere in singoli file zip.

Se seleziono tutte queste cartelle nel Finder e faccio "Comprimi [X] elementi", ottengo un file zip contenente tutte delle cartelle, mentre quello che voglio è un file zip < em> per cartella.

Ho provato a creare un flusso di lavoro con Automator utilizzando l'azione "Crea archivio", ma si comporta allo stesso modo: l'immissione di più file / cartelle genera un singolo file zip. Non c'è modo di specificare che l'azione venga eseguita singolarmente su ciascun elemento.

Fondamentalmente, sto cercando un modo per evitare di dover eseguire ripetutamente "Comprimi" nel Finder su ogni singola cartella uno alla volta. C'è un modo per automatizzare questo?

    
posta daGUY 27.01.2016 - 20:42
fonte

2 risposte

12

Ecco un servizio Automator che diventa disponibile in Finder quando Le cartelle sono selezionate e emula menu contestuali Comprimi [n] Elementi comando tranne crea un file di archivio zip individuale per ogni cartella selezionata nel nome della cartella selezionata. Se il file Nome.zip cartella esiste già, un " 2" ( spazio 2) viene aggiunto al nome file , ad es. Nome cartella 2.zip . Ciò garantisce che un file di archivio zip esistente non venga toccato e il nome file zip zip verrà automaticamente incrementato secondo necessità.

Per creare il servizio:

  1. Apri Automator e seleziona Servizio o File > Nuovo > Servizio se Automator è già aperto.

  2. Imposta Il servizio riceve selezionato in cartelle e in in Finder .

  3. Aggiungi un Esegui script di shell Azione , impostazione Shell: a / bin / bash e Passa l'input: a come argomenti e aggiungi il seguente codice :

    for f in "$@"; do
    
        dn="$(dirname "$f")"
        bn="$(basename "$f")"
    
        pushd "$dn"
    
        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. Salva il servizio come: Comprimi le cartelle separatamente

Per utilizzare il servizio:

In Finder o sul desktop seleziona più cartelle , quindi fai clic con il pulsante destro del mouse e seleziona Comprimi le cartelle separatamente da Servizi .

Oppure, dopo aver selezionato le cartelle di destinazione , puoi anche fare clic su Finder > Servizi > Comprimi le cartelle separatamente dalla barra dei menu .

Ecco qui, un modo per comprimere più cartelle separatamente e contemporaneamente contemporaneamente in singoli archivi zip mentre si emula il modo in cui Finder crea un file di archivio zip. Il che significa che l'archivio zip contiene i fork delle risorse preservati e i metadati HFS nella sottodirectory __MACOSX e incorpora solo il nome della directory padre source in destination-archive , non il nome completo del percorso come quando si utilizza zip (senza -j ) per creare l'archivio.

Immagine di Compress Folders separatamente (servizio)

    
risposta data 28.01.2016 - 06:55
fonte
11

C'è una soluzione alternativa che è integrata se non vuoi usare Automator e stai bene cambiando le impostazioni dell'archivio.

  1. Apri Archive Utility.app in / System / Library / CoreServices / Applications /
  2. Vai a File > Preferenze
  3. Modifica la preferenza "Usa formato archivio" su "Archivio Zip"
  4. Trascina e rilascia le cartelle nella sua icona nel dock.
risposta data 14.06.2016 - 08:56
fonte

Leggi altre domande sui tag