Comprimir por lotes varias carpetas en archivos zip individuales

8

Tengo docenas de carpetas que debo comprimir en archivos zip individuales.

Si selecciono todas estas carpetas en el Finder y hago "Comprimir [X] Elementos," obtengo un archivo zip que contiene todas de las carpetas, mientras que lo que quiero es un archivo zip < carpeta em> per .

Intenté crear un flujo de trabajo con Automator mediante la acción "Crear archivo", pero se comporta de la misma manera: al ingresar múltiples archivos / carpetas se genera un solo archivo zip. No hay forma de especificar que la acción se ejecute en cada elemento individualmente.

Básicamente, estoy buscando una manera de evitar tener que ejecutar tediosamente "Comprimir" en el Finder en cada carpeta, una a la vez. ¿Hay alguna forma de automatizar esto?

    
pregunta daGUY 27.01.2016 - 20:42

2 respuestas

12

Aquí hay un Servicio de automatización que está disponible en Buscador cuando se seleccionan Carpetas y emula el menús contextuales Comprimir [n] elementos comando excepto crea un archivo comprimido zip individual para cada Carpeta seleccionada en el nombre de la Carpeta seleccionada. Si el archivo Folder Name.zip ya existe, entonces se agrega un " 2" ( espacio 2) al filename , por ejemplo. Nombre de carpeta 2.zip . Esto garantiza que no se toque un archivo comprimido zip existente y el archivo comprimido zip archive se incrementará automáticamente según sea necesario.

Para crear el servicio:

  1. Abre Automator y selecciona Servicio o Archivo > Nuevo > Servicio Si Automator ya está abierto.

  2. Establezca El servicio recibe seleccionado en carpetas y en en Buscador .

  3. Agregue un Ejecución del script de shell Acción , configurando Shell: en / bin / bash y Pase la entrada: a como argumentos y agregue el siguiente código :

    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. Guarde el Servicio como: Comprimir carpetas por separado

Para usar el servicio:

En Finder o en Escritorio , seleccione varias Carpetas , luego haga clic con el botón derecho y seleccione Comprima las carpetas por separado de Servicios .

O después de seleccionar las Carpetas de destino, también puede hacer clic en Buscador > Servicios > Comprimir carpetas por separado de la barra de menú .

Ahí lo tiene, una forma de comprimir varias carpetas por separado y simultáneamente a la vez en archivos zip individuales mientras emula cómo Finder crea un archivo de archivo zip. Lo que significa que el archivo zip contiene las bifurcaciones de recursos preservados y los metadatos HFS en el subdirectorio __MACOSX e incluye solo el nombre del directorio principal fuente en archivo-destino , no la ruta de acceso completa como cuando se utiliza zip (sin -j ) para crear el archivo.

Imagen de comprimir carpetas por separado (servicio)

    
respondido por el user3439894 28.01.2016 - 06:55
11

Hay una solución alternativa que está integrada si no quieres usar Automator y no estás de acuerdo con cambiar la configuración de la Utilidad de archivo.

  1. Abra el archivo Utility.app ubicado en / System / Library / CoreServices / Applications /
  2. Ir a Archivo > Preferencias
  3. Cambie la preferencia "Usar formato de archivo" a "Archivo zip"
  4. Arrastra y suelta las carpetas en su icono en el dock.
respondido por el ababak 14.06.2016 - 08:56

Lea otras preguntas en las etiquetas