5 votos

Acción Automator no suministrada con los datos requeridos

Estoy tratando de hacer lo siguiente en un flujo de trabajo de Automator:

  1. Pide Buscador de elementos de Una carpeta
  2. En Una carpeta, agregar un sufijo a los nombres de archivo
  3. Copiar a carpeta B
  4. En la carpeta B, con un AppleScript, dividir el archivo de nombre por un delimitador y, a continuación, cambie el nombre del archivo con la segunda mitad del texto split
  5. En la carpeta B, añadir un prefijo a los nombres de archivo
  6. En la carpeta B, agregar un sufijo a los nombres de archivo

Aquí se muestra un ejemplo de los nombres de archivo que estoy tratando de cambiar el nombre de:

  • un nuevo archivo$SG789.jpg
  • file_2$123-456.jpg
  • file_name$LG123.jpg
  • this_file$558-432.jpg

El delimitador estoy dividiendo por que es el "$" signo de dólar para crear los siguientes archivos:

  • SG789.jpg
  • 123-456.jpg
  • LG123.jpg
  • 558-432.jpg

Estos son los formatos de nombre de archivo que me gustaría para el automator para continuar con el procesamiento.

Gracias a otro usuario, yo era capaz de llegar a este punto. Sin embargo, mi flujo de trabajo está fallando en el paso 5. Me da el siguiente aviso:

La acción "cambiar el nombre de Buscador de Artículos: Agregar Texto" no fue suministrado con los datos requeridos.

Aquí es el flujo de trabajo de instalación en Automator:

enter image description here

Con el AppleScript a continuación:

 on run {input, parameters}
     try
        set AppleScript's text item delimiters to "$"
        set output to {}
        repeat with anItem in input
            set the end of output to text item 2 of (anItem as text)
        end repeat
        set AppleScript's text item delimiters to {}
        return output
    on error eStr number eNum
        display dialog eStr & " number " & eNum buttons {"OK"} ¬
            default button 1 with icon caution
        set AppleScript's text item delimiters to {}
        return
    end try
end run

Pensé que por la devolución de los resultados, el siguiente flujo de trabajo de recoger y continuar con los cambios requeridos. Estoy viendo que no es el caso.

¿Cómo puedo devolver mi salida, así que el siguiente elemento de flujo de trabajo puede utilizar y continuar con el cambio de nombre de archivos?

5voto

user3439894 Puntos 5883

Todavía no está totalmente claro qué es lo que estamos tratando de lograr, sin embargo, aquí es un ejemplo de flujo de trabajo que puede encontrar útiles.

Primer Flujo De Trabajo De Automator

  • Divide en dos segmentos:

Primer Segmento:

  • Pide Buscador de Artículos
  • Cambiar El Nombre De Buscador De Artículos: Añadir Texto
  • Copia Buscador De Artículos
  • Ejecutar El Shell Script
    • Configuración: Shell: bin/bash y Pase de entrada: como argumentos
      • Reemplace el código por defecto con el código de abajo.
      • Esto es lo que se utiliza para eliminar hasta e incluyendo la $ en el nombre del nombre de archivo.

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

cd "$(dirname "$1")"
for f in "$@"
do
    mv "$(basename "$f")" "$(printf "$(basename "$f")" | sed -E 's/^.*\$//')"
done
echo "$(ls -1)"
  • Nota: El echo "$(ls -1)" comando no es realmente necesario en este caso de uso y se utiliza en este ejemplo, para mostrar los nombres de archivo ha sido cambiado, y para mostrar que en los Resultados del panel.

  • Actualización: Nuevo código para Ejecutar el Shell Script de acción:

    Utilice este código en lugar de la original del códigoanterior. He modificado para ser un poco más eficiente tener que llamar a basename una vez, en lugar de dos. (No he actualizado el código en el Ejecutar el Shell Script de acción en el original de la imagen a continuación).

    cd "$(dirname "$1")"
    for f in "$@"; do
        n="$(basename "$f")"
        mv "$n" "$(printf "$n" | sed -E 's/^.*\$//')"
    done
    echo "$(ls -1)"
    
  • Nota: Véase también la segunda Automator flujo de trabajo, que se muestra después de la original imagen de abajo, que niega la necesidad de que el Segundo Segmento:, como Ejecutar el Shell Script de acción es codificado para controlar el cambio de nombre que se lleva a cabo en el segundo segmento, añadiendo prefix- e intercambiando -proc para -suffix.


Segundo Segmento:

  • Pide Buscador de Artículos
    • Opciones: [√] Ignorar esta acción de entrada del
      • Al marcar esta opción usted podrá ver, en la imagen de abajo, es un querían desconexión entre la anterior y la presente.
  • Cambiar El Nombre De Buscador De Artículos: Añadir Texto
  • Cambiar El Nombre De Buscador De Artículos: Añadir Texto

Ver la imagen de abajo para ver otros ajustes aplicables de Automator acciones, como se muestra en la OP.

Como se puede ver en la imagen de abajo, todas las acciones se completó correctamente y se hizo lo programado, con el panel de Resultados de cada acción que muestra los resultados de su acción.


First Automator Workflow



Segundo Flujo De Trabajo De Automator

Para ser utilizado en lugar de la Primera Flujo de trabajo de Automator.

  • Pide Buscador de Artículos
  • Cambiar El Nombre De Buscador De Artículos: Añadir Texto
  • Copia Buscador De Artículos
  • Ejecutar El Shell Script
    • Configuración: Shell: bin/bash y Pase de entrada: como argumentos
      • Reemplace el código por defecto con el código de abajo de la imagen.

Second Automator Workflow

  • Los resultados de las tres primeras acciones en esta segunda Automator de flujo de trabajo son exactamente iguales a como se muestra en el primer flujo de trabajo anterior, por lo tanto me he dejado a los Resultados del panel oculto para estas acciones. Sin embargo, los Resultados del panel para Ejecutar el Shell Script de acción muestra los resultados deseados.

Código para Ejecutar el Shell Script de acción en el Segundo Flujo de trabajo de Automator:

p='prefix-'
s='-suffix'
t='-proc'

cd "$(dirname "$1")"
for f in "$@"; do
    n="$(basename "$f")"
    if [[ $n =~ ^.*\$.*${t}\.${n##*.} ]]; then
        mv "$n" "${p}$(printf "${n%.*}" | sed -E -e "s/$t/$s/" -e 's/^.*\$//').${n##*.}"
    fi
done
echo "$(ls -1)"
  • Actualización Nota: he modificado el código mediante la colocación de la variable de trabajos fuera de la for de bucle, ya que es el único código que usted necesita/desea modificar según sea necesario (y que no necesitan estar dentro de la for de bucle). No he actualizado la imagen de la Automator flujo de trabajo para reflejar esta actualización.

Usted puede, si lo necesita/quiere, añadir un segundo segmento de este segundo flujo de trabajo, pero el código en este Ejecutar el Shell Script de acción elimina la necesidad de los dos Cambie de Buscador de Artículos: Agregue Texto de las acciones que estaban en el segundo segmento de la primera (original), de flujo de trabajo.

Nota: voy a actualizar esto con una explicación de lo que el código está haciendo en Ejecutar el Shell Script de acción, tan pronto como puedo.

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