Applescript 终端退出而不执行操作
我制作了一个脚本,其中有一个代码块启动终端,使用FTP从服务器检索图片 当我在脚本编辑器下运行脚本时,一切正常:脚本启动终端,打开FTP会话,设置目标路径,获取文件,从服务器上删除它们,关闭连接,等待终端活动结束,然后退出 但当我以应用程序的形式运行脚本时,大约90%的情况下,应用程序启动终端,然后终端立即退出。当终端似乎正确地“获取”FTP命令时,连接完成,获取文件等等。完美地但这种情况只发生在少数情况下 下面是我为这部分编写的最后一个代码:Applescript 终端退出而不执行操作,applescript,Applescript,我制作了一个脚本,其中有一个代码块启动终端,使用FTP从服务器检索图片 当我在脚本编辑器下运行脚本时,一切正常:脚本启动终端,打开FTP会话,设置目标路径,获取文件,从服务器上删除它们,关闭连接,等待终端活动结束,然后退出 但当我以应用程序的形式运行脚本时,大约90%的情况下,应用程序启动终端,然后终端立即退出。当终端似乎正确地“获取”FTP命令时,连接完成,获取文件等等。完美地但这种情况只发生在少数情况下 下面是我为这部分编写的最后一个代码: tell application "Termi
tell application "Terminal"
activate
-- Wait for "no more activity"
set frontWindow to window 1
repeat until busy of frontWindow is false
delay 1
end repeat
-- Perform FTP actins
set shell to do script "ftp -i ftp://user_ftp:pass_ftp@host_ftp/" in window 1
do script "lcd ~/Desktop/tmp_instagram/" in shell
do script "mget *.jpg" in shell
do script "mdel *.jpg" in shell
do script "bye" in shell
-- Wait for no more activity
set frontWindow to window 1
repeat until busy of frontWindow is false
delay 1
end repeat
end tell
tell application "Terminal" to quit saving no -- Saving no to avoid conf alert
为了避免你浪费时间,我做了一些测试,但没有成功:
- 将整个FTP命令设置在一行中,以便
- 在ativate之后延迟5次,而不是在busy上重复
- 在ftp命令之后放置一个延迟
实际上,终端似乎在收到FTP命令(立即打开和关闭)之前关闭 多亏了Mark Setchell的评论,我没有使用“shell”命令就尝试了,事实上它似乎是关键。下面是一段正确运行的代码:
tell application "Terminal"
activate
set w to window frontmost
do script "ftp -i ftp://xxxxx:yy@dddddd/" in w
do script "lcd ~/Desktop/tmp_aarecno_instagram/" in w
do script "mget *.jpg" in w
do script "mdel *.jpg" in w
do script "bye" in w
set frontWindow to window 1
repeat until busy of frontWindow is false
delay 1
end repeat
end tell
你为什么要启动终端?@Mark直接使用shell d'ont work。但我认为set shell和终端是打开的这一事实之间存在冲突。我发现了更好的选择:不使用shell,而是在终端下执行脚本,看起来还可以。