5

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

现在我可以使用

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

或者

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

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

4

2 回答 2

4

不,您不能使用“选择文件”或“选择文件夹”动词来执行此操作,但底层支持选择文件NSOpenPanel文件夹(或多个文件/文件夹) 。所以你可以用 AppleScriptObjC 来做。这是一个使用ASObjCRunner的示例(源自此处):

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

{file "Macintosh HD:Users:nicholas:Desktop:fontconfig:", file "Macintosh HD:Users:nicholas:Desktop:form.pdf"}
于 2013-10-23T20:01:44.597 回答
0

首先,你不需要告诉。

POSIX path of (choose file)

其次,不清楚你为什么需要这个。你的意思是你想选择一个文件和它的文件夹?你不是那样做的。您选择文件然后解析包含文件夹的文件路径或使用多种方法之一来执行此操作,例如

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}

如果您希望能够同时选择多个文件夹和文件,我认为没有“纯applescript”方法可以做到这一点(除了使用拖放感知脚本应用程序)。

于 2013-10-23T19:39:00.677 回答