不能做"路径"变成真实的

时间:2015-12-01 11:22:29

标签: cocoa unix applescript

我在"资源"里面有一个脚本文件。文件夹,我试图像这样运行它

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)

2 个答案:

答案 0 :(得分:1)

两个问题:

  • 您正在混合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参数必须用空格字符分隔(scriptpathvariable1之间以及variable1variable2之间),并且必须转义参数中的空格字符。< / p>

答案 1 :(得分:0)

你的问题就在这一部分:

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

要将文字字符串连接到变量,您需要将字符串包装在引号中并使用&

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

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