使用Applescript删除文件。一个糟糕的剧本?

时间:2011-05-18 10:56:07

标签: applescript directory

我对Applescript很新,但在过去的五年中使用过其他脚本语言。我写了一个快速脚本,根据文件名匹配和修改日期删除一些文件/目录。我也做了几次测试,但我现在的印象是它写得很糟糕或者很危险,因为它可能会删除超过必要的数量。

如果您是专业脚本编写者,请告诉我脚本是否有问题?这不安全吗?我被引导相信,在与一位认为已经完成某些“损害”的同事交谈之后。

这是脚本:

set my_path to "Macintosh HD:Users:infmz:Backups"
    tell application "Finder"
        delete (every item of folder my_path whose modification date is less than ((get current date) - 4 * days) and name contains "backup_id")
        empty trash
    end tell

具体来说,我正在尝试删除超过三天的备份文件夹。所有这些文件夹的名称都包含字符串“backup_id”。

2 个答案:

答案 0 :(得分:0)

如果这是整个脚本,那么我会说一个真正跳出来的“不安全”项是你没有解析文件夹路径以确保脚本没有被定向到一个重要的文件夹,如“Macintosh HD:System:”或“Macintosh HD:Library:”。

另一件事是我不认为脚本在删除之前解析文件的效果不错。这更多是方法问题,但如果是我,我会首先生成一个初始目标文件列表(请参阅"Get full directory contents with AppleScript"),然后解析该列表以查找要删除的实际目标。

此外,我会生成所采取操作的日志并删除“空垃圾”命令,以允许用户在最终删除之前仔细检查脚本的操作。

描述其他用户观察到的伤害会很有帮助。

答案 1 :(得分:0)

如果RAID遭遇断电,那么可能比你的脚本损坏更多。通读,我没有注意到任何异常。

关于@Philip指出的内容 - 垃圾桶是用于文件删除的撤消系统。因此,在没有使用同意的情况下自动清除它是一种不礼貌的行为。

如果备份位于不同的卷上(据我所知,它是一些共享RAID),您可以查看如何empty trash for single volume only

该链接还有一个示例,说明如何首先确认与用户的清空。