TextExpander和AppleScript在Mac上获取文件路径

时间:2014-05-15 06:19:18

标签: applescript

我想创建一个TextExpander代码段,它会提示我在Finder中选择一个文件,并将文件路径复制到我正在使用的文本编辑器中。

它应该像这样工作:

  1. 我在NVAlt工作
  2. 我输入TextExpander命令(例如;路径)
  3. 我提示顶部选择一个文件
  4. 文件路径将复制到我正在处理的备注中。
  5. 我认为我会使用AppleScript来做,所以我尝试了这个:

    set source_folder to choose file with prompt "Please select a file."
    tell application "System Events"
       set item_list to POSIX path of every disk item of source_folder
    end tell
    return "path:" & item_list
    

    但它没有回复我正在处理的文字说明......

    有什么建议我该怎么办?

    PS:我使用POSIX命令将文件夹名称改为" ... / ... / ... /"而不是" ...:...:..."

1 个答案:

答案 0 :(得分:3)

脚本中存在多种错误,但我没有尝试更正您的脚本,而是查看了textExpander告诉我的操作。在关于smilesoftware.com网站上的textExpander的帮助部分,他们说:

  

该脚本在TextExpander应用程序的上下文中执行。   该脚本可以执行各种操作,但代码段将扩展为   无论发回什么文字。

在查看目标时,您只需要将选择文件命令中返回的别名强制转换为字符串并返回该字符串。因此,如下所示的单行应足以用于将HFS路径返回到文件

return choose file with prompt "Please select a file." as string

如果要将文件路径作为POSIX路径返回,则只需要:

return POSIX path of (choose file with prompt "Please select a file.")

如果您希望路径以"路径前缀:"比如你的示例代码:

return "path:" & (choose file with prompt "Please select a file.")

注意:选择文件结果存在隐式强制,不需要明确的强制。

编辑:我自己下载了textExpander,似乎在textExpander的上下文中显示对话框会出错。所以我所做的就是查找最前面的应用程序并在那里显示对话框,它看起来也更好看。然后我明确告诉该应用程序显示选择文件提示并返回选择文件提示的结果。这是代码:

tell application "System Events"
    set applicationName to (name of every process whose frontmost is true) as string
end tell

using terms from application "AppleScript Editor"
    tell application applicationName
        set expansionString to (choose file "Please select a file.") as string
    end tell
end using terms from

return expansionString