Obtener nombres de file individuales en Automator

La idea detrás de un pequeño proyecto en el que estoy trabajando es poder upload un file de música y hacer que After Effects lo recoja y lo renderice dentro de una plantilla de file de video que tengo.

El flujo de trabajo sería:

  • Impresión a granel de files PDF
  • El service de Automator no se muestra en el menu de services
  • ¿Cómo puedo ejecutar un script PHP al soltar el file en el ícono?
  • ¿Mi flujo de trabajo de Automator falla porque no puede encontrar el command git dentro del command 'Ejecutar script de Shell'? Necesitas ayuda
  • Establecer una variable para el resultado de un command de terminal dentro de un AppleScript
  • Cómo acceder a una URL clicada en una aplicación de controller de URL creada en Automator
  • Una vez que cargué un nuevo file de música en una carpeta en mi iCloud Drive, mi iMac controlaría mi seguimiento. Cada nuevo file de música activa un guión de Adobe que importa la nueva pista a un proyecto Adobe After Effects que lo exporta a AME y luego se cierra. La música luego se mueve a otro directory.

    Me encontré con un problema al pasar un nombre de file a una secuencia de commands de Adobe, así que para solucionar este problema hice una plantilla de secuencia de commands de Adobe con un nombre de file de position (la ruta de file siempre sería la misma) que puede duplicarse, tener el placeholder filename reemplazado (a través de un script por lotes, aunque podría haber una forma más simple de hacerlo, sospecho), ejecutado y luego eliminado.

    Como primer paso, he tratado de centrarme en get el nombre de los nuevos files en la carpeta, ahora con éxito mixto. Cuando ejecuto un file de script AppleScript (.scpt) adjunto a la carpeta, puedo ver el nombre del file y pasarlo a un file por lotes. El problema ahora es que no parece funcionar con el equivalente de Automator.

    Código a continuación:

    on adding folder items to thisFolder after receiving theseItems repeat with i from 1 to count theseItems try set thisItem to item i in theseItems set thisItemsInfo to info for thisItem set thisItemsFileName to quoted form of name in thisItemsInfo display dialog thisItemsFileName buttons {"Continue"} do shell script "/Users/jeffolaa/ReplaceName.sh " & thisItemsFileName end try end repeat end adding folder items to 

    El lote ReplaceName es un solo command:

     #!/bin/bash sed -i.bu 's/EDITTHIS/'$1'/' /Users/jeffolaa/Library/Mobile\ Documents/com\~apple\~CloudDocs/Documents/Adobe\ Scripts/AddMusicExport.jsx 

    Hasta ahora, mi flujo de trabajo de Automator se ve así:

    enter image description here

    ¡Toda ayuda es muy apreciada!

  • El command 'ls' del terminal no muestra los files cuando se generan nuevamente
  • ¿Cambiar la asociación de files en la terminal?
  • Abrir script de shell desde el Finder de forma interactiva
  • ¿Cuál de las aplicaciones coreutils de GNU está incluida en el package MacPorts coreutils?
  • Monte .sparseimage desde .bash_profile
  • ¿Cómo puedo hacer fallar si -exec falla?
  • 2 Solutions collect form web for “Obtener nombres de file individuales en Automator”

    Nota: Esta respuesta se escribió en base a la publicación original de la pregunta y, en particular, los primeros tres párrafos de esta respuesta, sin esta nota. Desde entonces, el OP se ha actualizado para abordar lo expresado en los primeros tres párrafos y ahora pueden parecer fuera de context. Sin embargo, al mirar el historial de edición del OP uno puede ver la relevancia en el context de la pregunta original. Permanecerán por ahora hasta que tenga time de hacer una edición apropiada.


    Lo sentimos, pero su pregunta no está bien definida y no está totalmente claro qué acciones agregó al flujo de trabajo de Automator Folder Action , sin la obvia acción Ejecutar AppleScript . Tampoco está claro si se han agregado acciones antes o después de la acción Ejecutar AppleScript . Además, no está claro qué código está en /Users/jeffolaa/pointer.sh o todo lo que está haciendo. Lo que me lleva a pensar que simplemente pasar el name del file a pointer.sh puede no ser suficiente. Aunque sin ver el código en pointer.sh , en este momento solo tú sabes.

    Además, la forma del código AppleScript que ha mostrado en el OP no es la forma adecuada para un flujo de trabajo de la Acción de la carpeta Automator utilizando una acción Ejecutar AppleScript . El controller de on adding folder items es del tipo utilizado en un file de secuencia de commands de AppleScript (.scpt) que se asigna manualmente a la carpeta de destino mediante el command Configuración de acción de carpeta … en el menu contextual de Servicios en Finder , no en Automator , donde necesidad de utilizar el controller de on input en la acción Ejecutar AppleScript .

    Tampoco tiene un código de event handling errores , que es importante en las Acciones de carpeta y el tipo y la cantidad pueden depender de lo que haya codificado en pointer.sh . En otras palabras, es posible que desee filtrar los elementos agregados a la carpeta por tipo, asegurándose de que sea un file, no una carpeta, o un tipo particular de file con una extensión determinada, etc. Esto se puede hacer en Automator antes de que llegue a la acción Ejecutar AppleScript , o en el código de la acción Ejecutar AppleScript , o en el código en pointer.sh , o una combinación de alguno o todos ellos.


    Dicho esto, el siguiente ejemplo de código AppleScript es una encoding mínima de lo que tiene sentido para poder pasar el nombre de ruta completo citado de los files agregados a la carpeta de destino configurada en Acción de carpeta de Automator. El file y las carpetas se agregan a [ carpeta ] para pasar a pointer.sh , ya que es típico de un argumento pasado a un command de shell .

    Ejemplo mínimo de código AppleScript para usar en una acción Ejecutar AppleScript en un flujo de trabajo de Acción de carpeta de Automator :

     on run {input, parameters} repeat with i from 1 to count input try set thisItem to item i in input set thisItemsPathname to quoted form of POSIX path of thisItem do shell script "/Users/jeffolaa/pointer.sh " & thisItemsPathname end try end repeat end run 

    Código de AppleScript de ejemplo mínimo para usar en un file de scripts de AppleScript (.scpt) asignado manualmente a la carpeta de destino mediante el command Configuración de la acción de la carpeta … desde el menu contextual de Servicios en Finder :

     on adding folder items to thisFolder after receiving theseItems repeat with i from 1 to count theseItems try set thisItem to item i in theseItems set thisItemsPathname to quoted form of POSIX path of thisItem do shell script "/Users/jeffolaa/pointer.sh " & thisItemsPathname end try end repeat end adding folder items to 
    • Nota: Para usar un file de script AppleScript (.scpt) usando el command Configuración de acción de la carpeta … desde el menu contextual de Servicios en Finder , primero debe agregarse a la ~/Library/Scripts/Folder Action Scripts que está dentro de su Home carpeta.

    Para probar el código anterior, creé el file /Users/jeffolaa/pointer.sh con el siguiente código :

     #!/bin/bash mv "$1" "$HOME/Test/" 

    Lo cual simplemente mueve los files a la carpeta desde la que fueron arrastrados hasta la carpeta de destino a la que está asignada la Acción de carpeta , que es una carpeta dentro de la carpeta Prueba . Esto me hizo saber que estaba funcionando correctamente como está codificado.


    Ahora bien, si es solo el name del file que desea pasar a pointer.sh , puede usar lo siguiente:

    Ejemplo mínimo de código AppleScript para usar en una acción Ejecutar AppleScript en un flujo de trabajo de Acción de carpeta de Automator :

     on run {input, parameters} repeat with i from 1 to count input try set thisItem to item i in input set thisItemsInfo to info for thisItem set thisItemsFileName to quoted form of name in thisItemsInfo do shell script "/Users/jeffolaa/pointer.sh " & thisItemsFileName end try end repeat end run 

    Código de AppleScript de ejemplo mínimo para usar en un file de scripts de AppleScript (.scpt) asignado manualmente a la carpeta de destino mediante el command Configuración de la acción de la carpeta … desde el menu contextual de Servicios en Finder :

     on adding folder items to thisFolder after receiving theseItems repeat with i from 1 to count theseItems try set thisItem to item i in theseItems set thisItemsInfo to info for thisItem set thisItemsFileName to quoted form of name in thisItemsInfo do shell script "/Users/jeffolaa/pointer.sh " & thisItemsFileName end try end repeat end adding folder items to 
    • Nota: Para usar un file de script AppleScript (.scpt) usando el command Configuración de acción de la carpeta … desde el menu contextual de Servicios en Finder , primero debe agregarse a la ~/Library/Scripts/Folder Action Scripts que está dentro de su Home carpeta.

    Para probar el código anterior, pointer.sh file pointer.sh con el siguiente código:

     #!/bin/bash say "$1" 

    Que simplemente dice el name del file que se encuentra en thisItemsFileName , que me permite saber que estaba funcionando correctamente como codificado.


    Nota: El ejemplo del código AppleScript anterior es solo eso, y sin envolverlo en una statement try , no incluye ningún otro event handling error que pueda ser apropiado / necesario / deseado, el usuario tiene la responsabilidad de agregar cualquier event handling error apropiado para cualquier código de ejemplo presentado y / o código escrito por uno mismo.

    Dicho esto, si actualizas tu pregunta para completar las piezas que faltan, como se mencionó en los primeros párrafos de mi respuesta, me complacerá editar estos ejemplos de código para reflejar qué event handling errores se debe agregar. Simplemente no tiene sentido agregarlo hasta que sepa los detalles.

    Logré resolver mi bloqueador gracias a algunas sugerencias increíbles de @ user34393894.

    En lugar de usar Automator, pude get el resultado que necesitaba a través de un script de AppleScript adjunto como una Acción de carpeta.

    Para cualquier persona interesada, el código que estoy usando y que está obteniendo excelentes resultados es:

     on adding folder items to thisFolder after receiving theseItems repeat with i from 1 to count theseItems try set thisItem to item i in theseItems set thisItemsInfo to info for thisItem set thisItemsFileName to quoted form of name in thisItemsInfo tell application "System Events" -- get item info set theKind to kind of thisItem set theExtension to name extension of thisItem end tell if theKind is "Folder" then -- do folder stuff else if theExtension is "mp3" then do shell script "/Users/jeffolaa/ReplaceName.sh " & thisItemsFileName end if end try end repeat end adding folder items to 

    Si alguien tiene algún comentario o construye sobre el código que sería muy apreciado, ¡siempre buscando mejorar!

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).