OS X имеет встроенную поддержку для перехода к определенным папкам (Home, Utilities, Desktop и т.д.) Через ярлык.

Я хотел подражать этому поведению для папки загрузок. Единственное, чего не хватает в приведенном ниже сценарии, это то, что он не будет работать, если в Finder не будет открыто окно (см. Сообщение об ошибке).

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

Сообщение об ошибке:

error "Finder получил ошибку: Невозможно установить окно Finder 1 в папку \" Downloads \"папки \" username \"диска \" Macintosh HD \"." номер -10006 из окна Finder 1

Было бы хорошо, если вы знаете о некоем «if-compliement», который вызывает открытие папки загрузок, если в Finder нет открытого окна 1. Заранее спасибо.

3 ответа3

1

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

И, например, opensA открывает / Приложения.

На самом деле он не эмулирует эти ярлыки по умолчанию, но есть несколько преимуществ:

  • Вы можете использовать глобальные сочетания клавиш, немного как с триггерами Quicksilver
  • Восстанавливает границы по умолчанию (например, Finder Minder)
  • Вы можете убедиться, что окно открывается с вашими предпочтительными параметрами просмотра
  • IMO лучше иметь только одно открытое окно Finder за раз, так что это как бы усиливает его
1

Я бы просто использовал open утверждение следующим образом, используя тот факт, что Finder уже знает, что означает home :

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

который создаст новое окно, показывающее папку загрузок, или перенесет любое окно, показывающее папку загрузок, на передний план.

1

Пункты меню Go открывают новое окно, если ни один еще не открыт. Итак, чтобы получить такое же поведение:

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

Это не работает, если вы используете FileVault, хотя. Вы всегда можете использовать путь относительно вашей домашней папки, используя

folder "Downloads" of home

как предложил @Asmus.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .