我想要这个AppleScript片段的JXA等效版本:
这个SO答案似乎相关,但我无法将其适应我的需求:
非常感谢任何帮助!
tell application "Finder"
# Get path
set currentTarget to target of window 1
set posixPath to (POSIX path of (currentTarget as alias))
# Show dialog
display dialog posixPath buttons {"OK"}
end tell
我最接近的方法是使用url
属性来初始化一个Foundation NSURL对象,并像下面这样访问它的fileSystemRepresentation属性:
// Get path
var finder = Application('Finder')
var currentTarget = finder.finderWindows[0].target()
var fileURLString = currentTarget.url()
// I'd like to get rid of this step
var fileURL = $.NSURL.alloc.initWithString(fileURLString)
var posixPath = fileURL.fileSystemRepresentation
// Show dialog
finder.includeStandardAdditions = true
finder.displayAlert('', {buttons: ['Ok'], message: posixPath})
但是这似乎过于复杂了。有没有更好的方法来获取POSIX路径,而不使用Foundation API或手动字符串操作呢?
如果我尝试这样幼稚的方法:
finder.finderWindows[0].target().posixPath()
I get this error:
app.startupDisk.folders.byName("Users").folders.byName("kymer").folders.byName("Desktop").posixPath()
--> Error -1728: Can't get object.
这个SO答案似乎相关,但我无法将其适应我的需求:
App = Application.currentApplication()
App.includeStandardAdditions = true
SystemEvents = Application('System Events')
var pathToMe = App.pathTo(this)
var containerPOSIXPath = SystemEvents.files[pathToMe.toString()].container().posixPath()
非常感谢任何帮助!
NSURL
。 - vadianNSURL
,因为在这种情况下它是最简单和最稳健的解决方案,但是要非常清楚:_这不应该是必需的_。我已经在我的答案中更加明确了这一点。 - mklement0