Belirli bir zamanda bir uygulamadan çıkıp bilgisayarı uyku moduna geçirecek bir AppleScript nasıl oluşturabilirim?


8

Bu şeyin işe yaraması için AppleScript ve Automator ile uğraşıyordum, ancak kafamın etrafını dolaştığını göremiyorum. Herhangi biri bana bir örnek gösterebilir veya bir uygulamayı belirli bir zamanda kapanacak şekilde nasıl ayarlayabileceğim ve sonra bilgisayarı uyku veya kapanmaya koyabileceğim konusunda bazı ipuçları verebilirse, çok memnun oluruz.


Bunun düzenli yapılmasını ister misiniz, yoksa manuel olarak başlatmak istediğiniz bir şey mi?
Ephsmith

Daha önce yazılmış AppleScript var mı?
Ephsmith

Düzenli olarak yapılmasını istediğim ve başlamak konusunda endişelenmenize gerek olmayan bir şey. Bir senaryo yazmıştım ama oldukça dağınıktı, bu yüzden çöpe atıp buraya geldim. Cevabınız için teşekkürler. Bunu bırakacağım ve umarım yaşadığım sorunları temizler.
Tomás Richardson

Bunun düzenli yapılmasını istiyorsanız, işi planlamak atistediğiniz şey değildir. cronveya launchd. Bunu ayarlamak için daha kolay bir arayüz istiyorsanız, belki de lingon 3 yardımcı olacaktır.
Efsmith

Yanıtlar:


14

Düzenli olarak planlanmış bir zamanda çalıştırılmasının aksine bu prosedürü başlatmak istediğinizi farz ediyorum.

Benim yaklaşımım bunu komut satırından başlatmak olacaktır, ancak herhangi bir komut bir Automator betiğinin bir kabuk betiği bileşeninde bazı değişikliklerle çalıştırılabilir. Aşağıdaki yaklaşım işi tamamlamak için birkaç bileşeni bir araya getirir:

  1. tellUygulamadan çıkmak için bir komut
  2. Bilgisayarı uyku moduna geçirmek için bir komut satırı çağrısı
  3. Belirli bir süre için 1 ve 2'yi programlamak için bir komut satırı çağrısı.

1. Uygulamaya istifa etmesini söylemek

Bu kadar basit olabilir:

osascript -e 'tell application "AppName" to quit'

2. Bilgisayarı uyku moduna geçirmek

pmsetDaha fazla ayrıntıya bir göz atın , ancak aşağıdaki komutu vermek bilgisayarınızı uyku moduna geçirir:

pmset sleepnow

3. Belirli bir zamanda çalıştırılacak olan bir işlem planlamak

At komutuna bir göz atın . Bu komut size bir komutun çalışması için bir süre belirtme yeteneği verir. Varsayılan olarak olmadığı için bu işlevi etkinleştirmeniz gerekir. Artalanı etkinleştirmek için atrunaşağıdaki komutu çalıştırın [SU referansı] :

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Etkinleştirdikten sonra atrun, herhangi bir komut belirli bir süre için belirli bir zaman için yayınlanarak programlanabilir.

echo "<command>" | at HH:MM

hangi çalışır çünkü varsayılan olarak atgiriş alır stdin. Daha basit bir yaklaşım, bir dosyada listelenen komutları çalıştırmaktır. -fBayrak kullanılarak bir dosya çalıştırılabilir , ardından aşağıdaki gibi çalıştırılacak komut dosyasının adı:

at -f /path/to/file HH:MM

Hepsini bir araya koy

Aşağıdaki atrunetkin olduğunu varsayar . Oyuncak örneği olarak, Mail'i bırakmak ve bilgisayarı 11: 00'da uyku moduna geçirmek istediğimi varsayalım. Çalıştırılmasını istediğim komutları içeren bir dosya oluşturacağım:

osascript -e 'tell application "Mail" to quit'
pmset sleepnow

Bu dosyayı kaydedin quit-and-sleepve sonra komut satırında çalıştırın.

at -f /path/to/quit-and-sleep 23:00

Uyarılar

Mail'in gerçekten kapalı olduğundan emin olmak için herhangi bir kontrol yapmadım. Bu komut dosyası ayrıca, bilgisayarı uyku moduna geçirmenin yoluna girecek hiçbir şeyin olmayacağını varsayar. İstediğiniz şey için başlangıç ​​noktası olarak basitleştirdim.


1

İşte bu kodlanmış bir zaman değeri verilen, bunu gerçekleştiren kesinlikle bir elma grafik sürümüdür. İsterseniz elbette bu kısmı etkileşimli yapabilirsiniz. Ayrıca, bu sürüm zaman dizgisinin bugünle ilgili olduğunu varsayar.

--Get time setting for action to occur
set t to "3:16:30 PM"
--build a time string to use as a target.
set cd to (current date) as text
set AppleScript's text item delimiters to " "
set targetTime to text items 1 thru -3 of cd
set targetTime to date ((targetTime as text) & " " & t)

repeat while (current date) < targetTime
    beep
    delay 30 -- check the time every 30 seconds
end repeat

tell application "Mail"
    quit
end tell

tell application "Finder"
    display dialog "Do you want to shut the computer down now?"
    if button returned of the result is "Ok" then
        shutdown
    end if
end tell

1

Bir etkinliği şununla bir defa planlayabilirsiniz:

at 23:59 <<< 'osascript -e "quit app \"Mail\""; pmset sleepnow'

Ya da her gün tekrarlanmasını programlamak için crontab'ı düzenleyin EDITOR=nano crontab -eve şöyle bir giriş ekleyin:

59 23 * * * osascript -e 'quit app "Mail"'; pmset sleepnow

saat 23:59 <<< 'osascript -e "uygulamadan çık \" Mail \ ""; pmset sleepnow 'benim için çalışmıyor. "Sat Nis 30 12:47:00 2016" da 1. iş "yazıyor, ancak zamanı gelince emri çalıştırmıyor
oluckyman

0

İşte geçerli uygulamadan çıkmadan ve uyumadan önce birkaç saniye bekleyecek kod.

delay (your amount of seconds here)
tell application "System Events"
    key down {command}
    keystroke "q"
    key up {command}
    set volume "1"
    say "computer going to sleep"
    tell application "Finder"
        sleep
    end tell
end tell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.