例如,我正在尝试使用BetterZip在applescript自动化中提取文件
字典显示unarchive
命令的语法:
命令语法
unarchive file or list of file ¬
with preset text ¬
with options unarchive options
其中unarchive options
是具有一组属性的预定义记录类型:
unarchive options (record)
PROPERTIES
Property Access Type
---------------------------------
clean archive get/set boolean
create extra folder get/set create extra folder (enum)
destination get/set file or destination folder
password get/set text
trash archive get/set boolean
在我的代码中,我想使用BetterZip提取文件
tell application "BetterZip"
unarchive "/path/to/zipfile" with options {clean archive:false, destination:original, create extra folder:never, trash archive:false}
end tell
在脚本调试器6 中,错误为unable to coerce the data to the desired type {errAECoerionFail:-1700}
状态栏显示Stopped {Error: Can't make {clean archive:false, destination:original, create extra folder:never, trash archive:false} type unarchive options
那么如何将unarchive options
类型的记录传递给命令?
更新
我已经找到了问题的根源,但我仍然无法找到解决方案。
可以通过BetterZip的命令unarchive options
检索get extraction preset with name "preset name"
,返回值为record
,例如Script Debugger中的一个,以AEPrint格式显示为{{1} }。
如果我使用相同的键和值创建记录,则AEPrint为{ 'uoDs':'Orig', 'uoEF':'efNv' }
,注意{ 'aoDs':'Orig', 'uoEF':'efNv' }
的内部令牌不同。 (一个是destination
,另一个是uoDs
)。
此外,如果我合并记录:aoDs
,则返回值似乎有重复的键而不是合并它们:{destination:original} & (get extraction preset with name "ExtractHere")
而AEPrint是{destination:original, destination:original, create extra folder:never}
。
所以我认为这就是为什么unarchive命令不会接受类似{ 'aoDs':'Orig', 'uoDs':'Orig', 'uoEF':'efNv' }
的参数,因为键名下面不匹配。
但是如何创建一个匹配正确类型的?
答案 0 :(得分:0)
当我想在AppleScript中解压缩文件时,我只使用“do shell script”和“unzip”命令,例如。
do shell script "/usr/bin/unzip \"/path/to/zipfile\" -d \"/path/to/output/location\""