2010-01-20 17 views
1

我有做類似的東西一個AppleScript:我怎樣才能稍後做點什麼,但現在讓蘋果迴歸?

using terms from application "iChat" 
    on logout finished 
    delay 30 
    … do some stuff 
    end logout finished 
end using terms from 

的問題與此腳本,還在於它阻止應用程序中調用它爲30秒。然後,我想要做的事情就是說「在三十秒內,請爲我運行這個腳本」,然後將我所有的… do some stuff都移動到另一個腳本中。但我看不到如何做到這一點?

有什麼建議嗎?

回答

1

由於您使用的是Mac,我假設您已經安裝了Ruby。

你在說什麼聽起來像是你想要一個線程睡30秒,然後在後臺執行一個腳本。

您應該將… do some stuff放在名爲dostuff.scpt的腳本中,並將其放置在桌面上。

然後改變當前腳本如下代碼:

using terms from application "iChat" 
on logout finished 
    do shell script "ruby -e 'Thread.new {`sleep 30 && osascript ~/Desktop/dostuff.scpt`}' &> /dev/null" 
end logout finished 
end using terms from 

A碼細分: 做shell腳本(執行命令行的東西)

紅寶石-e(從執行Ruby代碼命令行)

Thread.new(使一個新的線程在後臺隱藏)

'(一切都在BA cktick是紅寶石shell命令)

osascript(執行命令行一個AppleScript)

〜/桌面/ dostuff.scpt(點路徑到您的文件,波浪替代你的主目錄,我假設你把dostuff.scpt在桌面上)

&>的/ dev/null的(Tells Applescript to not look for output and immediately go to the next code line

我嘗試沒有紅寶石這樣做,但是,我沒有運氣。讓我知道這是否適合你!

+0

是的,這是伎倆......謝謝! – 2010-01-26 13:30:18

+2

'ruby'位不是必需的;直接調用'osascript'並在'dostuff.scpt'文件的頂部放置'delay 30'命令。然而,你需要在shell腳本的末尾加上另外一個'&'來分離'osascript'進程,例如:'do shell script「osascript〜/ dostuff.scpt&>/dev/null&」 ' – has 2010-01-26 20:15:30