通过 AppleScript 在 OS X 中模拟“转到桌面/主页/等”行为

通过 AppleScript 在 OS X 中模拟“转到桌面/主页/等”行为

OS X 内置支持通过快捷方式进入某些文件夹(主页、实用程序、桌面等)。

我想模拟下载文件夹的这种行为。下面的脚本唯一缺少的是,当 Finder 中没有打开任何窗口时,它将不会成功(请参阅错误消息)。

tell application "Finder"
    activate
    set target of Finder window 1 to folder "Downloads" of folder "username" of disk "Macintosh HD"
end tell

错误信息:

错误“Finder 出现错误:无法将 Finder 窗口 1 设置为磁盘 \“Macintosh HD\” 文件夹 \“用户名\” 下的文件夹 \“下载\”。”编号 -10006 来自 Finder 窗口 1

如果您知道某种“if-compliement”,当 Finder 中没有打开窗口 1 时,它会触发打开下载文件夹,那就太好了。提前谢谢。

答案1

我将简单地使用open如下语句,利用 Finder 已经知道什么含义的事实home

tell application "Finder"
    activate
    open folder "Downloads" of home
end tell

这将创建一个显示下载文件夹的新窗口或将当前显示下载文件夹的任何窗口置于最前面。

答案2

如果尚未打开任何窗口,菜单项将打开一个新窗口。因此,要获得相同的行为:

tell application "Finder"
    activate
    if (count of windows) is equal to 0 then
        open folder "Macinthosh HD:Users:yourname:Downloads"
    else
        set target of (first window whose index is equal to 1) to folder "Macinthosh HD:Users:yourname:Downloads"
    end if
end tell

如果你使用文件保险箱不过。你始终可以使用相对于你的主文件夹的路径,

folder "Downloads" of home

正如@Asmus 所建议的那样。

答案3

set target不过,在列视图中使用起来相当烦人。它包括从根开始的每一列,即使一些包含的文件夹在侧边栏中。

我自己使用类似这样的东西:

tell app "Finder"
    activate
    set p to path to desktop
    close every window
    open folder p
    set w to window 1
    set toolbar visible of w to false
    set current view of w to column view
    set bounds of w to {0, 22, 960, 589}
end tell

例如⌥A打开/Applications。

事实并非如此仿真这些默认的快捷方式,但也有一些优点:

  • 你可以使用全局快捷键,有点像 Quicksilver 触发器
  • 它恢复默认边界(如 Finder Minder)
  • 您可以确保窗口以您喜欢的视图选项打开
  • 我认为最好一次只打开一个 Finder 窗口,所以这种方法可以强制执行

相关内容