AppleScript移动文件两段代码一段报错一段可运行原因问询
AppleScript 两段移动文件代码运行差异原因
核心原因:对象类型不匹配
AppleScript的Finder语法对入参类型有严格要求,两段代码的运行差异核心是传给move指令的参数类型不匹配:
- 第一段代码里的
DownloadsFolderAddress是字符串类型的路径,不是Finder可识别的folder对象,你直接对字符串调用entire contents of,Finder无法识别这个字符串对应文件夹实体,自然会抛出无法获取内容的错误。 - 第二段代码你明确加了
folder关键字声明,把DownloadsFolderAddress的字符串路径转换成了Finder可识别的folder对象,之后对这个合法对象获取entire contents,再转成列表传给move指令,类型完全匹配所以可以正常运行。
额外优化说明
你不需要单独把内容存为列表变量,只要在简化版代码里补全类型声明就能正常运行,示例如下:
tell application "Finder" move entire contents of folder DownloadsFolderAddress to folder StatementFolderAddress end tell
如果StatementFolderAddress也是字符串路径,同样需要加folder关键字声明,否则也会出现路径不识别的问题。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

