通过Automator中的Applescript在排序列表中选择文件

通过Automator中的Applescript在排序列表中选择文件,applescript,automator,Applescript,Automator,我在一个文件夹中有一堆文件,我想定期删除其中最旧的3个文件。问题是我不能依赖这些文件的创建日期或最后修改日期。这些文件都具有相同的名称和附加的时间戳-xxxxx 2019-08-29--U 01-37.sparsebundle 我已经创建了Automator步骤,如图所示 现在,在“排序查找器项目”步骤之后,如何使用Applescript选择和删除底部的2或3个文件 任何帮助都将不胜感激 要移动到垃圾箱或永久删除从Sort Finder items操作返回的列表中的最后三项,请添加一个运行Ap

我在一个文件夹中有一堆文件,我想定期删除其中最旧的3个文件。问题是我不能依赖这些文件的创建日期或最后修改日期。这些文件都具有相同的名称和附加的时间戳-xxxxx 2019-08-29--U 01-37.sparsebundle

我已经创建了Automator步骤,如图所示

现在,在“排序查找器项目”步骤之后,如何使用Applescript选择和删除底部的2或3个文件

任何帮助都将不胜感激

要移动到垃圾箱或永久删除从Sort Finder items操作返回的列表中的最后三项,请添加一个运行Apple脚本操作,并使用以下示例AppleScript代码:

删除tell应用程序前面的-from。。。您希望采取行动的声明

如果您只想处理列表中的最后两项,则将-3更改为-2 in:在输入的项目-3到-1中重复使用i

请注意,这个示例AppleScript代码在macOS High Sierra中适用

注意:示例AppleScript代码仅此而已,不包含任何适当的传统错误处理。用户有责任根据需要添加任何适当的错误处理。请查看中的语句和语句。另请参见。

要移动到垃圾箱,或永久删除从Sort Finder items操作返回的列表中的最后三项,请使用以下示例AppleScript代码添加Run Apple Script操作:

删除tell应用程序前面的-from。。。您希望采取行动的声明

如果您只想处理列表中的最后两项,则将-3更改为-2 in:在输入的项目-3到-1中重复使用i

请注意,这个示例AppleScript代码在macOS High Sierra中适用


注意:示例AppleScript代码仅此而已,不包含任何适当的传统错误处理。用户有责任根据需要添加任何适当的错误处理。请查看中的语句和语句。另请参见。

谢谢!这非常有帮助。我想添加一个if语句,以便它检查文件夹中的项目数,以确保在进入try语句之前至少有3个现有文件。要删除最后3个项目,我将如何操作?@Europa2010AD,您可以使用if语句,例如。,如果未计数输入>n,则返回其中n是要保留的最小备份数。将其置于try语句块之前。假设您将n设置为6,并在repeat语句中使用-3,则具有的备份将永远不会少于6,并且在有9个或更多备份之前不会删除。否则,您将不得不编写更复杂的if语句,或者更改repeat语句,等等。谢谢@user3439894!所以我尝试了你的建议-我把if not count input>4放在try语句块之前,然后返回。在repeat语句中将n设置为-2到-1,以便删除最后2个备份。然而,当我有5个备份时,它会删除最后2个备份,剩下3个备份——尽管我一直打算保留4个。因此,我尝试将if count input>4放入repeat语句中,否则在count input等于4时退出repeat,尝试跳出repeat循环。似乎不起作用。让我把密码分别发出去谢谢!这非常有帮助。我想添加一个if语句,以便它检查文件夹中的项目数,以确保在进入try语句之前至少有3个现有文件。要删除最后3个项目,我将如何操作?@Europa2010AD,您可以使用if语句,例如。,如果未计数输入>n,则返回其中n是要保留的最小备份数。将其置于try语句块之前。假设您将n设置为6,并在repeat语句中使用-3,则具有的备份将永远不会少于6,并且在有9个或更多备份之前不会删除。否则,您将不得不编写更复杂的if语句,或者更改repeat语句,等等。谢谢@user3439894!所以我尝试了你的建议-我把if not count input>4放在try语句块之前,然后返回。在repeat语句中将n设置为-2到-1,以便删除最后2个备份。然而,当我有5个备份时,它会删除最后2个备份,剩下3个备份——尽管我一直打算保留4个。因此,我尝试将if count input>4放入repeat语句中,否则在count input等于4时退出repeat,尝试跳出repeat循环。似乎不起作用。让我分别发布代码
on run {input, parameters}
    try
        repeat with i in items -3 thru -1 of input
                # To move to Trash, use Finder.
            -- tell application "Finder" to delete alias (i as text)
                # To permanently delete, use System Events.
            -- tell application "System Events" to delete alias (i as text)
        end repeat
    end try
end run