2 votos

automator para ejecutar AppleScript para un shell script

Para un archivo seleccionado en Finder, me gusta ejecutar un perl script usando Servicios. He creado un proceso de Automator que ejecuta un AppleScript:

on run {input, parameters}
    tell application "Terminal"
        activate
        do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & (input as string) & "\""
    end tell
end run

El único problema es que el nombre del archivo seleccionado aparece como algo así:

"Macintosh HD:Users:myaccountname:Documents:texfile.tex"

que el perl script no puede entender. ¿Cómo puedo hacer que sea un nombre de archivo tipo UNIX?

4voto

Lasse Puntos 1000

Tendrá que obtener la ruta POSIX del archivo de entrada:

on run {input, parameters}
    tell application "Terminal"
        activate
        do script "/Users/myaccountname/Applications/TeXcount_3_0/texcount.pl \"" & ( POSIX path of input as string) & "\""
    end tell
end run

Encontré la respuesta en StackOverflow .

1voto

También puede utilizar quoted form of para escapar de los argumentos:

on run {input, parameters}
    tell application "Terminal"
        do script "printf %s\\\\n " & quoted form of POSIX path of item 1 of input & ">/tmp/a"
    end tell
end run

O si el servicio puede recibir varios archivos como entrada:

on run {input, parameters}
    set args to ""
    repeat with f in input
        set args to args & " " & quoted form of POSIX path of f
    end repeat
    tell application "Terminal"
        do script "printf %s\\\\n " & args & ">/tmp/a"
    end tell
end run

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