Eliminar la sección delimitador del nombre de archivo con Automator

1

Estoy creando un script automator que copia los archivos de una carpeta a otra y luego ejecuta un AppleScript para cambiar el nombre del archivo al dividirlo por medio del delimitador y volver a guardarlo con el segundo elemento. Por ejemplo, usando nombres de archivos de:

  • un archivo nuevo $ SG789.jpg
  • file_2 $ 123-456.jpg
  • nombre_archivo $ LG123.jpg
  • este_archivo $ 558-432.jpg

Estoy intentando dividir el nombre del archivo por el signo de dólar "$" para crear los siguientes archivos nuevos:

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

Sin embargo, cuando ejecuto el script, aparece el siguiente error:

La acción "Ejecutar AppleScript" encontró un error. No se puede obtener el elemento 2 del alias "Macintosh HD: Usuarios: descargas: Archivo: un archivo nuevo $ SG789-PROC.jpg".

Este es el código que estoy ejecutando en el flujo de trabajo Ejecutar AppleScript:

on run {input, parameters}
    set AppleScript's text item delimiters to "$"
    repeat with anItem in input
        set fileName to item 2 of anItem
        return fileName
    end repeat
end run

¿Qué estoy haciendo mal?

    
pregunta Yazmin 21.07.2017 - 05:06

1 respuesta

0

Estás haciendo muchas cosas mal:

  1. Si configura los delimitadores de elementos de texto de AppleScript en un valor distinto a su {} predeterminado, restablézcalo siempre a {} cuando termine con el delimitador temporal.
  2. input es un list y, como tal, debería return a list y hacerlo fuera del repeat loop .
  3. item 2 dentro del repeat loop necesita ser text item 2 , sin embargo , anItem dentro del repeat loop en este el caso de uso también debe ser text , por lo que debe ser (anItem as text) .
  4. fileName debe ser list porque estás procesando un list y necesitas return a list .

Dicho esto, aquí hay un ejemplo de flujo de trabajo de Automator con una acción de AppleScript codificada a modo de ejemplo de cómo escribiría el código . Sin embargo, tenga en cuenta que, si bien devuelve una lista de los nombres de archivo después del delimitador $ , no estoy seguro de qué le servirá, ya que todo depende del código adicional que no se encuentra actualmente en este ejemplo.

CódigodeAppleScriptparalaacciónEjecutarAppleScript:

onrun{input,parameters}trysetAppleScript'stextitemdelimitersto{"$"}
        set theFileNameList to {}
        repeat with thisItem in input
            set the end of theFileNameList to text item 2 of (thisItem as text)
        end repeat
        set AppleScript's text item delimiters to {}
        return theFileNameList
    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
    
respondido por el user3439894 21.07.2017 - 08:32

Lea otras preguntas en las etiquetas