1 votos

Utilizar Applescript para lanzar varias instancias de una aplicación

Este es mi código. Quería ejecutar una aplicación (Game Capture HD.app) dos veces al mismo tiempo. Pero me sale este error de sintaxis: Se esperaba """ pero se encontró un token desconocido.

on run
    do shell script "open -n /Applications/Game\ Capture\ HD.app"
    tell application "Game\ Capture\ HD" to activate
end run

on open theFiles
    repeat with theFile in theFiles
        do shell script "open -na /Applications/Game\ Capture\ HD.app " & quote & (POSIX path of theFile) & quote
    end repeat
    tell application "Game\ Capture\ HD" to activate
end open

0 votos

tell application … to activate no acepta una cadena escapada, sólo el nombre de la aplicación - "Game Capture HD" pero no tengo ni idea del resto, si funcionará o no.

0 votos

He intentado el nombre pero dice nombre no encontrado :/

0 votos

Tan pronto como cambie esta línea /Applications/Game\ Capture\ HD.app a cualquier cosa que dice Se espera """, pero encontró token desconocido

1voto

Mockman Puntos 16

Los espacios desordenan las cosas. Inténtalo:

do shell script "open -n " & quoted form of "/Applications/Game Capture HD.app"

Esencialmente, 'quoted form' es para pasar texto a 'do shell script'. Tanto el editor script como el shell interpretarán el texto y 'quoted form' ayuda a gestionarlo.

Guarda lo siguiente como una aplicación y luego si sueltas algunos archivos de texto en ella, una instancia separada de TextEdit abrirá cada uno. La aplicación y cada uno de los archivos soltados se envuelven en comillas simples para el shell.

on open theFiles
    set tApp to "/Applications/TextEdit.app"
    set qApp to quoted form of tApp

    repeat with ef in theFiles
        set ppf to quoted form of POSIX path of ef

        do shell script "open -n " & qApp & space & ppf

    end repeat
end open

Para ver cómo se descompone, aquí está como un script normal que funciona con archivos seleccionados. El set shCmd… devuelve el comando enviado al shell.

tell application "Finder" to set theFiles to selection as alias list

set tApp to "/Applications/TextEdit.app"
set qApp to quoted form of tApp
repeat with ef in theFiles
    set ppf to quoted form of POSIX path of ef

    do shell script "open -n " & qApp & space & ppf

    set shCmd to "open -n " & qApp & space & ppf
    --> "open -n '/Applications/TextEdit.app' '/Users/username/Desktop/style attributes of.rtf'"

end repeat

Para utilizarlo con una aplicación diferente, cambie el valor de 'tApp'.

0voto

Akababa Puntos 108

El espacio escapado \ es el problema. Si simplemente elimina la barra invertida \ y deje el espacio sin escribir, obtendrá un mensaje diferente pero el script seguirá fallando. Utilice la función [[:space:]] en su lugar.

Por ejemplo,

do shell script "open -n /Applications/Game\ Capture\ HD.app"

se convierte:

do shell script "open -n /Applications/Game[[:space:]]Capture[[:space:]]HD.app"

Es menos legible, pero debería funcionar como se espera. No puedo probarlo en su aplicación específica y caso de uso preciso, pero haciendo lo anterior me permitió crear un AppleScript para abrir con éxito múltiples instancias de otro programa sin errores.

De la lectura de sus comentarios, veo que es posible que desee las múltiples instancias del programa para hacer referencia a diferentes configuraciones. Dependiendo de su configuración, usted todavía puede encontrar problemas con una instancia de sobrescribir los cambios en la configuración realizada por la otra instancia. Ver esta respuesta en StackOverflow para una posible solución.

Tuviste suerte en tu experiencia anterior duplicando VLC.app y no te encontraste con este problema antes, ya que su ruta y nombre no tenían espacios.

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