Mac OS - 我可以使用“file:///~”之类的相对路径为本地文件生成可点击的 link

Mac OS - Can I generate a clickable link to local file using relative path like “file:///~”

在我的公司,我们使用 Google 驱动器并且经常必须告诉对方特定文件的路径。由于我们使用了很多嵌套文件夹,因此路径很长,因此浏览所有这些内容非常无聊且耗时。

现在,在我以前的公司,我们使用中央 af​​p 服务器,所以路径对每个人都是通用的,因此我创建了一个 applescript 脚本,可以获取文件的绝对 afp 路径,人们将该路径粘贴到邮件或聊天,最终用户可以单击自动成为 link 的路径,查找器将打开,selecting link 导致的特定文件或文件夹。

我不能使用完全相同的脚本的原因是 Google 驱动器文件夹位于用户主文件夹中。因此,如果用户名为 Foo,则路径将为 file:///Users/Foo/Google Drive,而对于用户 Bar,路径将为 file:///Users/Bar/Google Drive

显然,从用户 Foo 生成的路径不适用于用户 Bar

因为,至少在终端中,到 file:///Users/username 的路径等于 ~,我让我的脚本生成 links 就像 file:///~/Google Drive/pathToFolder,但它们确实如此不起作用 :( 单击这样的 link 将打开查找器,但不会 select 正确的文件或文件夹

这让我抓狂,因为它看起来应该可以工作,但实际上没有...还有其他我应该尝试的语法吗?有什么建议吗?

Applescript 有 "path to" 命令。它可以自动生成许多常用文件夹的路径,主文件夹就是其中之一。

这就是我将如何完成您的任务。将以下 applescript 代码保存为 application。然后通过电子邮件向所有人发送该应用程序。当他们双击它时,它将 1) 如果您 link 到一个文件夹,Finder window 将打开到该文件夹​​,或者 2) 如果您 link 到一个文件,那么该文件将使用默认应用程序自动打开。注意:如果您不想打开文件,则可以在代码中将 "open" 更改为 "reveal",这样只有 Finder window 会打开该项目。

重要提示:applescript 使用冒号 (:) 分隔路径而不是“/”,因此请确保在您的路径中使用冒号,如我的代码所示。

set itemPath to (path to home folder as text) & "Google Drive:path:to:some:file:or:folder"
tell application "Finder"
    set theItem to item itemPath
    if (class of theItem) is folder then activate
    open theItem
end tell

我实际上找到了一个相当快速的解决方案。

有一个名为 Lincastor https://onflapp.wordpress.com/lincastor/ 的免费 OSX 应用程序 太棒了! 它允许触发某个 shell 命令,applescript或应用,只要使用自定义 URL 处理程序。

所以我打算:

  1. 在用户 A 上创建一个脚本,生成一个以 googledrive:// 而不是 file:// 开头的 ling
  2. 在每个用户的 mac 上安装 Lincastor 并将其设置为打开 googledrive:// url 并指向用户的主文件夹加上 link
  3. 中的路径