无法将 "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 个字符分隔(在 scriptpath
和 variable1
之间以及 variable1
和 variable2
之间)并且参数中的 space 个字符必须转义。
你的问题是这部分:
... do shell script scriptpath/Contents/Resources/moveskript ...
要将文字字符串连接到变量,您需要将字符串用引号引起来并使用 &
:
do shell script scriptpath & "/Contents/Resources/moveskript"
因为斜杠不在引号内,Applescript 将它们识别为除号,因此它认为您正在尝试将 scriptpath
除以 Contents
。这就是为什么它试图将 scriptpath
变量强制转换为 real
类型。但是,因为它是一个带有字母的字符串,Applescript 无法转换它。
我在 "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 个字符分隔(在 scriptpath
和 variable1
之间以及 variable1
和 variable2
之间)并且参数中的 space 个字符必须转义。
你的问题是这部分:
... do shell script scriptpath/Contents/Resources/moveskript ...
要将文字字符串连接到变量,您需要将字符串用引号引起来并使用 &
:
do shell script scriptpath & "/Contents/Resources/moveskript"
因为斜杠不在引号内,Applescript 将它们识别为除号,因此它认为您正在尝试将 scriptpath
除以 Contents
。这就是为什么它试图将 scriptpath
变量强制转换为 real
类型。但是,因为它是一个带有字母的字符串,Applescript 无法转换它。