Jak mogę skrócić ten skrypt Apple? (zamykanie wielu aplikacji za pośrednictwem tell)


4

Chcę edytować część skryptu Apple, aby zamknąć różne aplikacje jednocześnie:

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

Ogólnie jest siedem wpisów, tak jak powyżej.

Czy jest jakiś sposób na napisanie tego bardziej kompaktowego?

Odpowiedzi:


10

Możesz użyć listy aplikacji i pętli. Po prostu dodaj nowe aplikacje do pierwszej listy, a zostaną one automatycznie zamknięte.

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

Tak, to bardzo chciałem mieć!
gentmatt

4
tell application "TweetDeck" to quit
tell application "Google Chrome" to quit

bloki tell-end-tell z jednym poleceniem można zapisać w jednym wierszu.


1

Niestety nie można przekazać wielu aplikacji do wywołania „powiedz aplikacji”.

Zamiast tego możesz użyć narzędzia uniksowego, które może zakończyć wiele aplikacji jednocześnie - killall.

Możesz wywołać to narzędzie z poziomu AppleScript:

do shell script "killall firefox Mail" - Spowoduje to zakończenie działania FireFox i Mail

„killall” rozróżnia małe i wielkie litery , więc najpierw musisz określić nazwy procesów aplikacji, które chcesz zabić.

  • Uruchom aplikacje, które chcesz zakończyć za pomocą skryptu
  • Użyj następującego polecenia (w oknie terminala), aby znaleźć ich pełne i poprawne nazwy. (W tym przykładzie szukamy prawidłowej nazwy procesu tweetdeck ).

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

Po uruchomieniu TweetDeck daje to wynik podobny do następującego:

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

Ostatnią częścią ścieżki jest nazwa procesu, ponieważ należy ją przekazać do „killall”. W tym przypadku TweetDeck (... Contents / MacOS / TweetDeck ).

Wracamy do naszego AppleScript i dodajemy TweetDeck do szeregu aplikacji, które kończymy. Oprócz mojego poprzedniego przykładu zrobiłbym:

do shell script "killall firefox Mail TweetDeck"

Mam nadzieję że to pomoże!


Dzięki za tę szczegółową odpowiedź! Myślę, że ta sztuczka mogłaby dobrze działać. Następnie mógłbym również użyć silniejszego polecenia, aby upewnić się, że aplikacje zostały zamknięte.
gentmatt

1
killall to takie polecenie. Jak dotąd w moich testach kończy się i „nie bierze więźniów”. Możesz także rozważyć użycie kill -9 zamiast killall.
macaco
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.