Applescript:检查 shell 命令是否失败?

Applescript:检查 shell 命令是否失败?

我正在编写一个 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

相关内容