2013-10-23 183 views
3

我可以使用AppleScript一次選擇文件或文件夾嗎?現在AppleScript選擇文件或文件夾

我可以用

tell application "SystemUIServer" to return POSIX path of (choose file) 

tell application "SystemUIServer" to return POSIX path of (choose folder) 

獲取文件或文件夾。但是我無法一次獲取文件或文件夾。

回答

3

不,你不能以「選擇文件」或「選擇文件夾」的動詞,但選擇一個文件文件夾(或多個文件/文件夾)由底層NSOpenPanel支持這樣做。所以你可以用AppleScriptObjC來做到這一點。下面是使用ASObjCRunner(來自here衍生)的示例:

script chooseFilesOrFolders 
    tell current application's NSOpenPanel's openPanel() 
     setTitle_("Choose Files or Folders") -- window title, default is "Open" 
     setPrompt_("Choose") -- button name, default is "Open" 

     setCanChooseFiles_(true) 
     setCanChooseDirectories_(true) 
     setAllowsMultipleSelection_(true) -- remove if you only want a single file/folder 

     get its runModal() as integer -- show the panel 
     if result is current application's NSFileHandlingPanelCancelButton then error number -128 -- cancelled 
     return URLs() as list 
    end tell 
end script 

tell application "ASObjC Runner" 
    activate 
    run the script {chooseFilesOrFolders} with response 
end tell 

ASObjCRunner轉換NSURLNSArray一個物體進入的file秒的AppleScript的列表;結果可能如下所示:

{file "Macintosh HD:Users:nicholas:Desktop:fontconfig:", file "Macintosh HD:Users:nicholas:Desktop:form.pdf"} 
0

首先,你不需要知道這一點。其次,目前尚不清楚爲什麼你需要這個。你的意思是你想選擇一個文件,它的文件夾?這不是你怎麼做的;您選擇如果您希望能夠在同一時間選擇多個文件夾和文件的文件,然後解析文件路徑,包含文件夾或使用的多種方法之一要做到這一點,像

set f to (choose file) 
set posixF to POSIX path of f 
tell application "Finder" to set filesDir to container of f as alias as text 
set posixDir to POSIX path of filesDir 

{f, posixF, filesDir, posixDir} 

,我不要認爲有一種「純蘋果」的方式來做到這一點(除了使用拖放感知腳本應用程序)。