4 votos

¿Cómo puedo hacer más corto este Apple script? (cerrar varias aplicaciones a través de tell)

Quiero editar una parte de un script de Apple para salir de varias aplicaciones a la vez:

tell application "TweetDeck"
    quit
end tell
tell application "Google Chrome"
    quit
end tell

En total hay siete entradas como las anteriores.

¿Hay alguna forma de escribir esto de forma más compacta?

11voto

michael Puntos 285

Puedes utilizar una lista de aplicaciones y un bucle. Solo tienes que añadir nuevas aplicaciones a esa primera lista y saldrán automáticamente.

set apps to {"Google Chrome", "Tweetbot", "ForkLift"}
repeat with thisApp in apps
    tell application thisApp to quit
end repeat

4voto

jojayontour Puntos 36
tell application "TweetDeck" to quit
tell application "Google Chrome" to quit

Los bloques tell-end-tell con un solo comando pueden escribirse en una línea.

1voto

eXtractor Puntos 172

Lamentablemente, no se pueden pasar varias aplicaciones a la llamada "tell application".

En su lugar, puede utilizar una utilidad de unix que puede terminar varias aplicaciones a la vez - killall.

Puede invocar esta utilidad desde un AppleScript:

do shell script "killall firefox Mail" - Esto terminaría con FireFox y Mail

'killall' distingue entre mayúsculas y minúsculas Por lo tanto, primero debe determinar los nombres de los procesos de las aplicaciones que desea matar.

  • Inicie las aplicaciones que querrá terminar con el script.
  • Utilice el siguiente comando (en una ventana de Terminal) para encontrar sus nombres completos y correctos. (En este ejemplo, queremos averiguar de Tweetdeck nombre correcto del proceso).

ps x | grep -i tweetdeck | grep -v grep

Con TweetDeck funcionando, esto dará una salida similar a la siguiente:

59127 ?? S 0:01.23 /Applications/TweetDeck.app/Contents/MacOS/TweetDeck -psn_0_21423213

La última parte de la ruta es el nombre del proceso tal y como debe pasarse a 'killall'. En este caso TweetDeck (...Contents/MacOS/ TweetDeck ).

Así que volvemos a nuestro AppleScript y añadimos TweetDeck a la cadena de aplicaciones que estamos terminando. Además de mi ejemplo anterior, yo haría:

do shell script "killall firefox Mail TweetDeck"

Espero que esto ayude.

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