我在"资源"里面有一个脚本文件。文件夹,我试图像这样运行它
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)
答案 0 :(得分:1)
两个问题:
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参数必须用空格字符分隔(scriptpath
和variable1
之间以及variable1
和variable2
之间),并且必须转义参数中的空格字符。< / p>
答案 1 :(得分:0)
你的问题就在这一部分:
... do shell script scriptpath/Contents/Resources/moveskript ...
要将文字字符串连接到变量,您需要将字符串包装在引号中并使用&
:
do shell script scriptpath & "/Contents/Resources/moveskript"
因为斜杠不在引号内,所以Applescript将它们识别为分区符号,因此它认为您试图将scriptpath
除以Contents
。这就是为什么它试图将scriptpath
变量强制转换为real
类型的原因。但是,因为它是带字母的字符串,所以Applescript无法转换它。