我有一个类似于:
的苹果using terms from application "iChat"
on logout finished
delay 30
… do some stuff
end logout finished
end using terms from
这个脚本的问题在于它还会阻止应用程序调用它30秒。我想做的是说“在三十秒内,请为我运行此脚本”,然后将我的所有… do some stuff
移动到另一个脚本。但我看不出怎么做?
有什么建议吗?
答案 0 :(得分: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
代码细分: 执行shell脚本(从命令行执行某些操作)
ruby -e(从命令行执行ruby代码)
Thread.new(使一个新线程隐藏在后台)
`(反引号中的所有内容都是ruby中的shell命令)
osascript(从命令行执行applescript)
〜/ Desktop / dostuff.scpt(指向你文件的路径名,代字号替换你的主目录,我假设你把dostuff.scpt放在桌面上)
&安培;> / dev / null(Tells Applescript to not look for output and immediately go to the next code line)
我试过没有Ruby这样做,但是,我没有运气。如果这对您有用,请告诉我!