4 votos

¿Cómo puedo usar Automator servicio para crear un archivo .zip de dos archivos originales con el mismo nombre?

enter image description here

Mira la imagen de arriba. Lo que estoy tratando de hacer es crear un servicio de Automator que me va a permitir seleccionar dos de los archivos, tales como

3LW Y Loon - yo (Quiero acercarme A Ti) (Dúo).cdg Y 3LW Y Loon - yo (Quiero acercarme A Ti) (Dúo).mp3

Y comprimir los dos archivos en un .postal de derecho

3LW Y Loon - yo (Quiero acercarme A Ti) (Dúo).zip

Y, a continuación, ser capaz de mover hasta

38 Especial - Mantener En Forma Suelta.cdg Y 38 Especial - Mantener En Forma Suelta.mp3

y comprimirlos en un .postal de derecho

38 Especial - Mantener En Loosely.zip

Es esto posible? No tengo idea de cómo hacerlo. Ningún tipo de ayuda será apreciada. Gracias.

4voto

user3439894 Puntos 5883

Sí, esto es posible, y en más de una manera.

A continuación se describe un mínimo sin adornos de flujo de trabajo:

  • En Automator, seleccione: Archivo > Nuevo > Servicio de

  • Set: Servicio recibe los archivos o carpetas seleccionados en el Buscador

  • Agregue las siguientes Acciones:

  • Ejecutar El Shell Script

    • Configuración: Shell: /bin/bash y Pase de entrada: como argumentos
    • Reemplace todo el código por defecto con sólo: echo "$(basename "${1%.*}")"
      • Devuelve el nombre de archivo porción del primer archivo, sin su extensión, y es lo que Establezca el Valor de la Variable se establece en.
  • Establezca el Valor de la Variable
    • Haga clic en, Variable: variable Nueva... y darle un nombre apropiado, por ejemplo: ZipFileName
  • Seleccionado Buscador De Artículos
    • Conjunto de Opciones : [√] Ignorar esta acción de entrada del
      • Tenga en cuenta que esto crea un querían romper entre esta acción y la anterior acción.
  • Crear Archivo
    • Conjunto de Guardar como: para ZipFileName mediante la función de arrastrar y soltar de la variable de la Variable de la sección en la parte inferior del panel de flujo de trabajo.
    • Conjunto Donde: a la Misma Carpeta de Entrada.

Actualización para agregar mover archivos a la Papelera:

  • Agregar estas Acciones:

  • Seleccionado Buscador De Artículos

    • Conjunto de Opciones : [√] Ignorar esta acción de entrada del
      • Tenga en cuenta que esto crea un querían romper entre esta acción y la anterior acción.
  • Mover el Buscador de Elementos a la Papelera

  • Guardar el Flujo de trabajo de Automator para darle un nombre apropiado, por ejemplo: Comprimir el Archivo de Conjunto de

Ahora en el Finder, seleccione dos de la coincidencia de los nombres de archivo, sans tener diferentes extensiones y, a continuación, haga clic derecho y seleccione Comprimir el Archivo de Conjunto, de los servicios de la sección del menú de contexto.

Nota: Este mínimo no frills Automator Flujo de trabajo de Servicio emplea ninguna comprobación de errores. Se basa en uno de seleccionar correctamente el dos de coincidencia de los nombres de archivo, y olvídate de las diferentes extensiones, para ser comprimidos juntos en un archivo zip del primer archivo del archivo, sin la extensión.

Ver el segundo flujo de trabajo, por debajo de la imagen, que emplea el condicional de comprobación de error y el manejo y tiene algunas características que el no frills de flujo de trabajo no tiene.

Automator Service Workflow


Segundo Flujo De Trabajo De Automator

El siguiente flujo de trabajo ha condicional de comprobación de error y la manipulación. Puede ser usado en lugar del no frills flujo de trabajo anterior:

Se utiliza como único Ejecutar el Shell Script de acción para manejar el proceso.

  • En Automator, seleccione: Archivo > Nuevo > Servicio de

  • Set: Servicio recibe los archivos o carpetas seleccionados en el Buscador

  • Añadir un Ejecutar el Shell Script de Acción

    • Configuración: Shell: /bin/bash y Pase de entrada: como argumentos
    • Reemplace todo el código por defecto con el código de mostrar más adelante.
  • Guardar el Flujo de trabajo de Automator para darle un nombre apropiado, por ejemplo: Comprimir el Archivo de Conjunto de

Ahora en el Finder, seleccione dos de la coincidencia de los nombres de archivo, sans tener diferentes extensiones y, a continuación, haga clic derecho y seleccione Comprimir el Archivo de Conjunto, de los servicios de la sección del menú de contexto.

Este Automator Servicio de Flujo de trabajo se emplea la siguiente condicional de la comprobación de errores y manejo de:

  • Se asegura de que sólo dos de los elementos son seleccionados en el Finder.
  • Se asegura de que ambos archivos tienen el mismo nombre de archivo, sin la extensión.
  • Se asegura de que las extensiones de nombre de archivo coincide con el tipo esperado, 'charles de gaulle' y 'mp3'.
  • Emplea adecuado manejo de errores si los errores de procesamiento.
  • Está codificado para ser capaz de dar verbal y visual de los mensajes según sea necesario.
    • Está configurado para utilizar el Centro de Notificaciones para los mensajes visuales, pero puede ser fácilmente cambiado a hablar de los mensajes.

Volantes:

  • Hace los mismos sonidos al comprimir y / o mover los archivos a la Papelera en el Finder.
    • Se puede configurar para jugar a este evento de sonido o no, por defecto es para jugar.
  • Directamente puede eliminar los archivos, en lugar de colocarlas en la Basura.
    • El valor predeterminado es para mover los archivos a la Papelera, hacer el cambio de este parámetro solamente de usted totalmente de entender que la finalidad de esta acción.

El script tiene dos Funciones y una Principal de la sección.

  • función CompressSelectedFiles ()
    • Este controla el trabajo duro y tiene la configuración para comprimir el sonido de evento y mover archivos a la Papelera.
  • función NotifyUserMessage()
    • Se encarga de notificar al usuario con los diferentes mensajes y la configuración para el tipo de notificaciones, verbal y / o visual.
  • Principal

    • Este controla el flujo de la lógica principal de validación se cumplen las condiciones antes de su procesamiento.
      Esta sección no tiene la configuración de usuario como de que en el plazo de dos funciones.
  • Leer los comentarios de toda la secuencia de comandos para modificar las características de forma adecuada.

Código para Ejecutar el Shell Script de Acción:

#!/bin/bash

    ### Functions ###

function CompressSelectedFiles () {

        # Change to the target directory, 
        # or notify user of failure and exit.

    if ! cd "$(dirname "$1")"; then
        NotifyUserMessage 'nochgdir'
        exit
    fi
        # Set the two filenames to variables.

    f1="$(basename "$1")"
    f2="$(basename "$2")"

        # Check to see if the target zip archive 
        # already exists, and if not, create it.

    if [[ ! -e "${f1%.*}.zip" ]]; then
            # Syntax: zip [options] zipfile file ...
        if ! zip "${f1%.*}.zip" "${f1}" "${f2}"; then
            NotifyUserMessage 'ziperror'
            exit
        fi

    #       # The following lines of code mimic Finder's Compress command
    #       # as to numerically incrementing an archive's filename. It has
    #       # been commented out as the user requested to delete the files
    #       # after I wrote this. I've left it, in case it's found useful.
    #
    # else
    #       # The zip archive already exists!
    #       # Numerically increment the zip filename.
    #   n=2
    #   for f in ${f1%.*} *.zip; do
    #       if [[ "${f1%.*} $n.zip" == "$f" ]]; then
    #           n="$(( n + 1 ))"
    #       fi
    #   done
    #       # Syntax: zip [options] zipfile file ...
    #   if ! zip "${f1%.*} $n.zip" "${f1}" "${f2}"; then
    #       NotifyUserMessage 'ziperror'
    #       exit
    #   fi

            # Make the same event sound Finder does when compressing files.
            # Note: Despite its name, this *is* the sound made by Finder when compressing files.
            # If you do not want to hear it, set 'playthis=1' to 'playthis=0'.

        playthis=1

        [[ $playthis -eq 1 ]] && afplay "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/Volume Mount.aif"
        [[ $playthis -eq 1 ]] && sleep 1    # Pause to allow time between event sounds.
    fi

        # The following was added per user request.
        #
        # Move File Set to the Trash. So you can then use
        # Put Back from the Trash in Finder, if necessary.
        # Default is to use the Trash, setting 'trash=1'.
        #
        # If you don't want to put the files in the Trash, 
        # just delete them directly, then set 'delete=1'
        # and set 'trash=0' when setting 'delete=1'.
        #
        # WARNING: Setting 'delete=1', this method
        #          is immediate and irreversible.

    trash=1
    delete=0

    [[ $trash -eq 1 ]] && osascript -e "set theFiles to {}" \
                                    -e "set the end of theFiles to POSIX file \"$1\"" \
                                    -e "set the end of theFiles to POSIX file \"$2\"" \
                                    -e "tell application \"Finder\" to move theFiles to trash"

    [[ $delete -eq 1 ]] && rm "$1" "$2"

        # Notify user processing is finished.

    NotifyUserMessage 'finished'
}   


function NotifyUserMessage() {

        # Set servicename='' to the name of this service.

    servicename='Compress File Set'

    # As currently set, messages are sent to the Notification Center.
    # If you want a verbal message, change the value of 'verbal=0'
    # to 'verbal=1'. If your OS version is older and doesn't support  
    # Notification Center from scripts, e.g. OS X 10.8, then change
    # 'visual=1' to 'visual=0'. Whichever your preference is, set 0
    # for false and 1 for true.

    verbal=0
    visual=1

    case $1 in
        selected )
                msg='This service requires two files to be selected.'
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename Error\""
                ;;
        filenames )
                msg='The filenames, sans extensions, are mismatched.'
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename Error\""
                ;;
        extensions )
                msg='One or both file extensions are not the expected type.'
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename Error\""
                ;;
        nochgdir )
                msg='An error occurred while trying to change directory.'
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename Error\""
                ;;
        ziperror )
                msg='An error occurred while compressing the files.'
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename Error\""
                ;;
        finished )
                msg='The selected files have been compressed.'
                [[ $verbal -eq 1 ]] && sleep 1  # Pause so as not to step on previous event sound.
                [[ $verbal -eq 1 ]] && say "$msg"
                [[ $visual -eq 1 ]] && osascript -e "display notification \"$msg\" with title \"$servicename\""
                ;;
    esac
}


    ### Main ###

        # Validate Conditions #

    # Make sure only two items are selected in Finder.

if [[ $# -eq 2 ]]; then

        # Make sure both files have the same filename, sans extension.

    if [[ ${1%.*} == "${2%.*}" ]]; then

            # Make sure the filename extensions match the expected type, 'cdg' and 'mp3'.

        if [[ ${1##*.} =~ [cC][dD][gG] ]] && [[ ${2##*.} =~ [mM][pP]3 ]]; then

                # All conditions met, create zip archive.

            CompressSelectedFiles "$1" "$2"

        elif [[ ${2##*.} =~ [cC][dD][gG] ]] && [[ ${1##*.} =~ [mM][pP]3 ]]; then

                # All conditions met, create zip archive.

            CompressSelectedFiles "$1" "$2"

        else
            NotifyUserMessage 'extensions'
        fi
    else
        NotifyUserMessage 'filenames'
    fi
else
    NotifyUserMessage 'selected'
fi

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X