【发布时间】:2017-01-28 06:16:26
【问题描述】:
我正在尝试获取 Finder 选择的文件的完整路径。至此,我尝试了很多方法:
>> Application('Finder').selection()[0]
=> Application("Finder").startupDisk.folders.byName("Users").folders.byName("example").folders.byName("Tools").folders.byName("my-tools").documentFiles.byName("example.sh")
>>
>> Application('Finder').selection()[0].name()
=> "example.sh"
>>
>> Application('Finder').selection()[0].toString()
=> "[object ObjectSpecifier]"
>>
>> Application('Finder').selection()[0].posixPath()
!! Error on line 1: Error: Can't get object.
>>
>> Application('Finder').selection()[0].path()
!! Error on line 1: Error: Can't get object.
>>
>> Application('Finder').selection()[0].url()
=> "file:///Users/example/Tools/my-tools/example.sh"
>>
>> Path(Application('Finder').selection()[0])
!! Error on line 1: Error: Can't get object.
>>
>> Path(Application('Finder').selection()[0]).toString()
!! Error on line 1: Error: Can't get object.
这些命令都没有获得/Users/example/Tools/my-tools/example.sh的posix路径。
最终,我知道我可以简单地将file:// 从网址前面去掉:
>> Application('Finder').selection()[0].url().replace(/^file:\/\//, '')
=> "/Users/example/Tools/my-tools/example.sh"
但这似乎很hacky,似乎应该有一个命令可以直接获取posix路径。
【问题讨论】:
-
另外,如果有 JXA 的 API 文档,如果有人能指点我,我将不胜感激。我知道the JXA Cookbook 和the JXA Release Notes,但我没有看到任何文档仅显示每个对象(例如文件)存在的所有方法和属性。
-
JXA 使用由可自动化应用程序和脚本扩展提供的 AppleEvent 定义,就像 AppleScript 一样。要查看此类库的文档,请打开脚本编辑器,将库窗口设置为显示,在此处找到相关的应用程序或扩展(在本例中为:Finder),双击它以打开库查看器。有一个下拉菜单可以选择显示文档的语言;如果您主要使用 JXA,您还可以在脚本编辑器首选项中将其设置为标准语言,文档也应遵循。
标签: javascript javascript-automation