2011-10-04 37 views
41

Tôi đang cố gắng khởi chạy một cửa sổ Trình tìm kiếm OSX theo chương trình từ một dự án Xcode. Tôi cần cửa sổ để mở một thư mục cụ thể và có các tệp cụ thể trong thư mục đó được chọn tự động.Khởi chạy cửa sổ Trình tìm kiếm OSX với các tệp cụ thể được chọn

Có ai biết cách thực hiện điều này trong các tham số dòng lệnh c, mục tiêu, hoặc tìm kiếm không?

Cảm ơn!

+0

[Làm thế nào để sử dụng AppleScript để lộ một tập tin trong Trình tìm kiếm từ đường dẫn POSIX của nó? - Apple - Stack Exchange] (http://apple.stackexchange.com/questions/26535/how-do-i-use-applescript-to-reveal-a-file-in-finder-from-its-posix-path/26579 # 26579) – user495470

+0

@ user979133 Tôi sẽ rất ngạc nhiên nếu Finder có bất kỳ tham số dòng lệnh nào khác ngoài các ứng dụng Cocoa có (chỉ có những cái tôi biết là thêm đường dẫn tệp để mở chúng). – CajunLuke

+0

Xem [cho mã Swift để khởi chạy Trình tìm kiếm OS X] (http://stackoverflow.com/questions/30738052/show-folders-contents-in-finder-using-swift/34578013#34578013) –

Trả lời

81

Objective-C phiên bản:

NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil]; 
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs]; 
+0

Tôi tò mò tại sao điều này lại bị bỏ qua; điều này thực hiện chính xác những gì người hỏi yêu cầu. – Wevah

+0

+1 để cân bằng :) – fireshadow52

+0

tuyệt vời! làm việc hoàn hảo. –

6

Một hương vị AppleScript - tiết lộ lệnh của Finder cả hai sẽ mở ra một cửa sổ đến thư mục chứa và chọn mục (s). Nếu có nhiều thư mục chứa, nhiều cửa sổ Trình tìm kiếm sẽ được mở.

tell application "Finder" to reveal {someAlias, "path/to/POSIXfile" as POSIX file, etc} 
16
$ open -R <path-to-reveal> 
+2

+1 vì mọi người có thể làm điều đó từ dòng lệnh! –

+1

Đó chính xác là những gì tôi đang tìm kiếm, cảm ơn! –

+1

Điều này làm việc cho các tệp đơn lẻ, nhưng không phải cho nhiều tệp: 'open -R foo.jpg bar.jpg' sẽ không chọn cả' foo.jpg' và 'bar.jpg'. – mjs

1

Tôi thấy rằng activateFileViewerSelectingURLs không hoạt động trên Yosemite (ít nhất là khi trong không gian tách biệt với Finder). Nó sẽ gây ra một chuyển sang không gian của người tìm nhưng dường như không chọn URL. Sử dụng:

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

sẽ chuyển không gian từ ứng dụng toàn màn hình và chọn con đường.

+0

Điều này có lẽ nên là một bình luận cho giải pháp được chấp nhận? – Alex

1

phiên bản Swift:

let paths = ["/Users/peter/foo/bar.json"] 
    let fileURLs = paths.map{ NSURL(fileURLWithPath: $0)} 
    NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(fileURLs) 
0

Khi mở một tập tin tại path:

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

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

Các vấn đề liên quan