本文介绍了AppleScript 选择文件或文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以使用 AppleScript 一次性选择文件或文件夹吗?

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

现在我可以使用

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

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

获取文件或文件夹.但是我无法一次性获取文件或文件夹.

to get file or folder. However I cannot get file or folder in one time.

推荐答案

不,你不能用选择文件"或选择文件夹"动词来做,而是选择一个文件文件夹(或多个文件/文件夹)由底层 NSOpenPanel 支持.所以你可以用 AppleScriptObjC 来做到这一点.这是一个使用 ASObjCRunner(源自 这里):

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 将 NSURL 对象的 NSArray 转换为 file 的 AppleScript 列表;结果可能类似于:

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"}

这篇关于AppleScript 选择文件或文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-25 07:57