Uruchom okno programu OSX Finder z zaznaczonymi konkretnymi plikami

Próbuję programowo uruchomić okno Findera OSX z projektu Xcode. Muszę otworzyć okno do określonego folderu i automatycznie wybrać określone pliki w tym folderze.

Czy ktoś wie jak to zrobić w parametrach wiersza poleceń objective c, applescript lub Finder?

Dzięki!

Author: simon.d, 2011-10-04

7 answers

Objective-wersja C:

NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
 83
Author: Wevah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-05 19:44:03
$ open -R <path-to-reveal>
 16
Author: Matt McClure,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-21 14:14:40

Kolejny smak AppleScript - polecenie Findera reveal otworzy okno do folderu zawierającego i wybierze element(Y). Jeśli istnieje wiele folderów zawierających, otworzy się wiele okien Findera.

tell application "Finder" to reveal {someAlias, "path/to/POSIXfile" as POSIX file, etc}
 6
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-06 01:09:44

Stwierdzam, że activateFileViewerSelectingURLs nie działa na Yosemite (przynajmniej w oddzielnej przestrzeni od Findera). Spowoduje to Przełączenie do przestrzeni Findera, ale nie będzie wydawało się, aby wybrać adres URL. Użycie:

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

Przełącza spacje z aplikacji pełnoekranowej i wybiera ścieżkę.

 1
Author: Joshua Fagans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 04:34:24

Wersja Swift:

    let paths = ["/Users/peter/foo/bar.json"]
    let fileURLs = paths.map{ NSURL(fileURLWithPath: $0)}
    NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(fileURLs)
 1
Author: Klaas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 13:10:46

Podczas otwierania pliku w path:

NSString* path = @"/Users/user/Downloads/my file"
NSArray *fileURLs = [NSArray arrayWithObjects:[NSURL fileURLWithPath:path], nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
 0
Author: maxisme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-14 15:08:32

Wersja Swift 3.2/4.0: NSWorkspace.shared.activateFileViewerSelecting([outputFileURL])

 0
Author: UnchartedWorks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-18 21:49:37