绕过AppleScript中的“无法获取窗口”错误

时间:2014-11-15 21:21:35

标签: applescript osascript

我正在尝试制作一个bash脚本来关闭某些查找程序窗口(我在MacOSX上)。不幸的是,一旦发现第一个窗口没有打开,脚本就会终止。 (例如:没有标题为“通讯”的窗口打开,但窗口“编辑器”打开;没有窗口关闭)。如果我打开一个名为Communication的窗口,它会关闭,但在第一个命令失败后没有任何内容。我已经尝试退出并出错,并取出“set -e”,但似乎没有任何工作。这是我的剧本:

#!/bin/bash
set -e
osascript <<EOF
tell application "Finder"
  close window "Communication"
  close window "Editors"
  close window "Gaming"
  close window "Music"
  close window "Technical"
  close window "Text Editors"
  close window "Utilites"
  close window "Camera"
  close window "External"
  close window "TAB Actual"
end tell

它给了我

error: 24:57: execution error: Finder got an error: Can't get window <"first window found to not be open">. (-1728) (1)

我不知道这是否意味着什么,但代码是通过Automator运行的。

感谢任何可以帮助我的人,是的,我对bash很新。

2 个答案:

答案 0 :(得分:1)

您可以使用ignoring application responses语句,例如:

#!/bin/bash
set -e
osascript <<EOF
tell application "Finder"
  ignoring application responses
    close window "Communication"
    close window "Editors"
    # More windows here...
  end ignoring
end tell

“Applescript语言指南”中有关控制语句的更多详细信息:https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html

答案 1 :(得分:0)

这是try语句的用途:

set windowNames to {"Communication", "Editors", "Gaming"}

tell application "Finder"
    repeat with wName in windowNames
        try
            close window wName
        end try
    end repeat
end tell