AppleScript choose file or folder

前端 未结 2 1410
感动是毒
感动是毒 2021-01-13 07:40

can I use AppleScript to choose either file or folder in one time?

Now I could use

tell application \"SystemUIServer\" to return POSIX path of (choo         


        
相关标签:
2条回答
  • 2021-01-13 08:04

    No, you can't do it with "choose file" or "choose folder" verbs, but choosing a file or folder (or multiple files/folders) is supported by the underlying NSOpenPanel. So you can do it with AppleScriptObjC. Here's an example using ASObjCRunner (derived from 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 converts a NSArray of NSURL objects into an AppleScript list of files; the results can look something like:

    {file "Macintosh HD:Users:nicholas:Desktop:fontconfig:", file "Macintosh HD:Users:nicholas:Desktop:form.pdf"}
    
    0 讨论(0)
  • 2021-01-13 08:10

    Firstly, you don't need a tell for that.

    POSIX path of (choose file)
    

    Secondly, it is not clear why you need this. Do you mean you want to select a file and it's folder? That's not how you do it; you select the file then parse the file path for the containing folder or use one of the many methods to do that, like

    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}
    

    If you want to be able to select multiple folders and files at the same time, I don't think there is a "pure applescript" way to do this (aside from using a drag-drop aware script application).

    0 讨论(0)
提交回复
热议问题