我正在编写一个 AppleScript 来监视文件夹中已完成的下载,然后处理它们。如果我要下载一个拆分为部分 RAR(.r01、.r02、…)的文件,天哪,我讨厌那些),它们会在完成时随机进入“已完成”文件夹。每次完成其中一个时,脚本都会触发,但我不希望它在完成所有任务之前开始自动取消存档。
这是我的解决方案。在脚本中,当我检测到 rar 时,我首先验证其完整性:
do shell script ("unrar v " & theItem)
壳会吐出以下东西:
… 测试存档 thefile.r19 96% … 测试存档 thefile.r20 99% ... 计算所有卷的控制总和。无法找到卷 thefile.r21 … thefile.avi - CRC 失败 总错误数:1
我是 AppleScript 新手。扫描并确定验证是否失败的最有效方法是什么?
(或者,unrar v
很耗时;有没有更好的方法来解决这个问题?)
答案1
如果您将代码更改为:
set output to do shell script ("unrar v " & theItem)
变量输出将保存 shell 脚本的输出,您可以使用它来与您期望的有效输出进行比较。
if output contains "CRC Failed" then
return
end if
为了避免运行,unrar v
您可以对文件的扩展名进行检查(无论是theItem
在 AppleScript 中设置时,还是在您用来监视文件夹的任何方法中 - 如果您手动执行了 launchd 作业并且没有使用文件夹操作)
有关更多信息,do shell script
请查看 Apple 的技术说明 2065。