无法将 "path" 变为真实类型

Cant make "path" into type real

我在 "Resources" 文件夹中有一个脚本文件,我正在尝试 运行 像这样

set scriptpath to (path to current application as text)
set scripty to do shell script scriptpath/Contents/Resources/moveskript & variable1 & variable2 with administrator privileges

但它告诉我:

2015-12-01 12:19:47.208 Move[16404:534222] *** -[AppDelegate mybuttonhandler:]: Can’t make "(path.app):" into type real. (error -1700)

两期:

  • 您混淆了 HFS 路径(冒号分隔)和 POSIX 路径(斜杠分隔)
  • current application 是当前的 AppleScript 运行程序,而不是当前的脚本/应用程序。

使用 Cocoa 方法获取资源文件夹的路径。

set resourceFolder to current application's NSBundle's mainBundle's resourcePath()
set scriptpath to (resourceFolder's stringByAppendingPathComponent:"moveskript") as text
set scripty to do shell script quoted form of scriptpath & space & quoted form of variable1 & space & quoted form of variable2 with administrator privileges

考虑 shell 个参数必须用 space 个字符分隔(在 scriptpathvariable1 之间以及 variable1variable2 之间)并且参数中的 space 个字符必须转义。

你的问题是这部分:

... do shell script scriptpath/Contents/Resources/moveskript ...

要将文字字符串连接到变量,您需要将字符串用引号引起来并使用 &:

do shell script scriptpath & "/Contents/Resources/moveskript"

因为斜杠不在引号内,Applescript 将它们识别为除号,因此它认为您正在尝试将 scriptpath 除以 Contents。这就是为什么它试图将 scriptpath 变量强制转换为 real 类型。但是,因为它是一个带有字母的字符串,Applescript 无法转换它。