15 votes

Compression par lots de plusieurs dossiers en fichiers zip individuels

J'ai des dizaines de dossiers que je dois compresser en fichiers zip individuels.

Si je sélectionne tous ces dossiers dans le Finder et que je fais "Compresser [X] éléments", j'obtiens un fichier zip contenant tous des dossiers, alors que ce que je veux c'est un fichier zip par dossier.

J'ai essayé de créer un flux de travail avec Automator en utilisant l'action "Créer une archive", mais il se comporte de la même manière : la saisie de plusieurs fichiers/dossiers produit un seul fichier zip. Il n'y a aucun moyen de spécifier que l'action doit être exécutée sur chaque élément individuellement.

En gros, je cherche un moyen d'éviter d'avoir à lancer fastidieusement "Compresser" dans le Finder sur chaque dossier, un par un. Existe-t-il un moyen d'automatiser cette opération ?

1 votes

J'ai mis à jour ma réponse pour améliorer le code utilisé pour incrémenter le nom de fichier de l'archive zip afin qu'il émule la façon dont la commande Compress [n] Items du menu contextuel du Finder incrémente un nom de fichier.

0 votes

Désolé, j'ai mis à jour le code une fois de plus pour enlever l'inutile popd et corrigé une faute de frappe fatale dans for i in $bn*.zip; do qui aurait dû être for i in $bn *.zip; do . Notez l'espace entre $bn y *.zip il était absent et n'aurait pas dû l'être. Donc, s'il vous plaît, mettez-le à jour dans votre mise en œuvre, sinon cela marche sur File Name 2.zip lorsque le basename a un espace dans celui-ci.

27voto

ababak Points 309

Il existe une autre solution intégrée si vous ne voulez pas utiliser Automator et si vous pouvez modifier les paramètres d'Archive Utility.

  1. Ouvrez l'application Archive Utility.app située dans /System/Library/CoreServices/Applications/.
  2. Allez dans Fichier > Préférences
  3. Changez la préférence "Utiliser le format d'archive" en "archive Zip".
  4. Glissez et déposez les dossiers dans son icône dans le dock.

0 votes

L'avantage de cette option est que vous pouvez configurer les préférences d'Archive Utility.app pour déplacer l'original vers la corbeille à la fin de l'opération, ce qui n'est pas limité aux dossiers. Existe-t-il un moyen de configurer un service Automator pour qu'il s'ouvre avec Archive Utility.app en tant que service si vous souhaitez que le clic droit soit une option ? Je me suis heurté à une limitation car Archive Utility.app ne peut pas être sélectionné à l'aide de l'action Lancer l'application.

1 votes

@thepen, vous pouvez bien sûr sélectionner Utilitaire d'archivage comme action de lancement de l'application. Il suffit de sélectionner "Autre " et de naviguer jusqu'à son emplacement qui est /System/Library/CoreServices/Applications/ (vous pouvez appuyer sur Cmd-Shift-G lorsque la boîte de dialogue de sélection de fichier est ouverte pour coller ce chemin pour une navigation rapide)

1 votes

Quelle est la différence entre "format d'archive" et "archive zip" ?

18voto

user3439894 Points 52496

Voici un Automator Service 1 qui devient disponible en Finder quand Dossiers sont sélectionnés et émule le site Menus contextuels Compresser [n] éléments commande sauf il crée un fichier d'archive zip individuel pour chaque sélection Dossier dans le nom de la sélection Dossier . Si le Nom du dossier.zip existe déjà, alors un " 2" ( espace 2) est annexé à la nom de fichier par exemple Nom du dossier 2.zip . Cela permet de garantir qu'une fichier d'archive zip n'est pas touché et le nom de fichier de l'archive zip sera automatiquement incrémenté si nécessaire.

<sup>1 </sup>Sur <strong>MacOS Mojave </strong>et, plus tard, un <strong>Automator </strong><em>Service </em>est appelé <em>Action rapide </em>. Il existe également d'autres différences de nomenclature mineures, mais elles devraient être plus évidentes lorsqu'on les compare aux flux de travail Automator antérieurs à MacOS Mojave.

Pour créer le service : 1

  1. Ouvrir Automator et sélectionnez Service 1 ou Fichier > Nouveau > Service Si Automator est déjà ouvert.

  2. Définir Le service reçoit sélectionné à dossiers y sur à Finder .

  3. Ajouter un Exécuter le Shell script Action , réglage La coquille : à /bin/bash y Passez l'entrée : à comme arguments et ajoutez ce qui suit code :

    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. Sauvegarder le Service comme : Compresser les dossiers séparément

Pour utiliser le service :

Sur Finder ou sur le Bureau choisir plusieurs Dossiers entonces Cliquez à droite sur et sélectionnez Compresser les dossiers séparément de dessous Services .

Ou après avoir sélectionné la cible Dossiers vous pouvez également cliquer sur Finder > Services > Compresser les dossiers séparément de la barre de menu .

Voilà, un moyen de compresser plusieurs dossiers séparément et simultanément en une seule fois dans des archives zip individuelles tout en émulant la façon dont le Finder crée un fichier d'archive zip. Cela signifie que l'archive zip contient les fourches de ressources préservées et les méta-données HFS dans le sous-répertoire __MACOSX et ne contient que le nom du répertoire parent. source sur destination-archive et non le chemin d'accès complet comme dans le cas de l'utilisation de l'option zip (sans -j ) pour créer l'archive.

Image de Compresser les dossiers séparément

Compress Folders Separately - Automator Service

0 votes

J'ai vérifié à la fois votre solution et celle de @ababak. Elles donnent exactement le même résultat et celle d'ababak est beaucoup plus facile à mettre en œuvre. J'ai quand même voté pour les deux.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X