设置脚本尝试装入网络驱动器时的到期时间

时间:2010-03-05 12:58:46

标签: applescript

启动脚本在我的macbook中安装了一个网络驱动器:

try
  tell application "Finder"
     mount volume "afp://iMac-01._afpovertcp._tcp.local/Backup%20HD"
  end tell
end try

这个脚本对我来说有两个问题:

  • 如果我不在网络驱动器所在的本地网络之外,脚本需要很长时间才能尝试连接它,并使我的macbook在初始化时缓慢。那么,如何设置脚本的最长时间尝试连接网络驱动器?

  • 如果无法连接网络驱动器,则会弹出一条警告我的消息。如何忽略此消息?即,不要出现。

我之前从未制作过苹果剧本,所以如果可能的话,请帮我修改原始剧本。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用'with timeout'

try
    with timeout of x seconds
        tell application "Finder"
            mount volume "afp://iMac-01._afpovertcp._tcp.local/Backup%20HD"
        end tell
    end timeout
end try

答案 1 :(得分:0)

回答你的问题: 1:使用超时作为mcgrailm状态;但是试着写一下

with timeout of 2 second --no plural
    <your code here>
end timeout

2:弹出的对话框是一个finder弹出窗口,因此你的脚本看不到,“try on error”永远不会被调用,因为错误永远不会返回给脚本,所以如果你想自动化点击在确定然后这个代码将工作。此代码将在超时秒后单击按钮。

try
    <your code here>
on error
    tell application "System Events"
        keystroke return
    end tell
end try 

我还包括了我在家中使用的相同想法的版本,此脚本检查网络,然后尝试使用shell挂载安装卷。我最初使用了一个带有超时的查找程序“mount volume”,并且代码也存在为内联注释,但我不喜欢弹出错误的对话框;即使只是一秒钟,所以我转向shell脚本。

--------------------------------------------------------------------------------------
--"Basic Drive Mounter.app"
try
    set IP_address to "xxx.xxx.xxx.xxx"

    set IP_Valid to true

    try
        do shell script ("ping -c 2 " & IP_address)
    on error
        set IP_Valid to false
    end try

    if IP_Valid then
        tell application "Finder"
            if disk "work" exists then
            else

                try
                    do shell script "mkdir /Volumes/work"
                end try

                do shell script "mount_afp afp://xxx.xxx.xxx.xxx/work /Volumes/work/"

                -->>finder mount volume version
                --with timeout of 2 second
                --  mount volume "afp://xxx.xxx.xxx.xxx/work"
                --end timeout
                --<<finder mount volume version
            end if
        end tell
    end if
on error
    return 0

    -->>finder mount volume version
    --on error finder returns an error dialog which needs to be closed to go back and  retry
    --tell application "System Events"
    --  keystroke return
    --end tell
    --<<finder mount volume version
end try    
--------------------------------------------------------------------------------------