Запустите окно OSX Finder с выбранными файлами - PullRequest
41 голосов
/ 04 октября 2011

Я пытаюсь программно запустить окно OSX Finder из проекта Xcode. Мне нужно, чтобы окно открывалось в определенную папку, и в ней автоматически выбирались определенные файлы.

Кто-нибудь знает, как это сделать в параметрах командной строки target c, applecript или Finder?

Спасибо!

Ответы [ 7 ]

85 голосов
/ 05 октября 2011

версия Objective-C:

NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
16 голосов
/ 21 апреля 2014
$ open -R <path-to-reveal>
7 голосов
/ 06 октября 2011

Еще одна разновидность AppleScript - команда Finder show откроет окно для содержащей папки и выберет элемент (ы). Если имеется несколько содержащих папок, будут открыты несколько окон Finder.

tell application "Finder" 
   to reveal {someAlias, "path/to/POSIXfile" as POSIX file, etc}
1 голос
/ 11 марта 2016

Swift версия:

    let paths = ["/Users/peter/foo/bar.json"]
    let fileURLs = paths.map{ NSURL(fileURLWithPath: $0)}
    NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(fileURLs)
1 голос
/ 01 апреля 2015

Я обнаружил, что activFileViewerSelectingURLs не работает на Yosemite (по крайней мере, когда он находится отдельно от Finder). Это приведет к переключению в пространство Finder, но, похоже, не выберет URL. Использование:

  • (BOOL)selectFile:(NSString *)fullPath inFileViewerRootedAtPath:(NSString *)rootFullPath

переключит пробелы из полноэкранного приложения и выберет путь.

0 голосов
/ 19 декабря 2017

Swift 3.2 / 4.0 Версия: NSWorkspace.shared.activateFileViewerSelecting([outputFileURL])

0 голосов
/ 14 марта 2017

При открытии файла в path:

NSString* path = @"/Users/user/Downloads/my file"
NSArray *fileURLs = [NSArray arrayWithObjects:[NSURL fileURLWithPath:path], nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
...