Applescript:重复声明以删除文件(并保留最少数量的文件)
Applescript: Repeat statments to remove files (and keeping a minimum number of them)
我在现有文件夹中有一堆文件,并尝试使用 Automator 首先生成文件列表,按名称降序排列,然后使用 Applescript 按顺序删除最旧的 2 个文件在该文件夹中维护总共 4 个文件。
下面是我使用的代码:
on run {input, parameters}
if not (count input) > 4 then return
try
repeat with i in items -2 thru -1 of input
# To move to Trash, use Finder.
tell application "Finder" to delete alias (i as text)
end repeat
end try
end run
它运行良好,但当我在该文件夹中总共有 5 个文件时出现问题;该脚本会丢弃最旧的 2 个文件,我最终会得到总共 3 个文件。我如何设置我的 if
或 repeat
语句,以便我可以始终维护总共 4 个文件,并简单地丢弃该文件夹中最旧的额外文件的数量?
简单算法
- 数文件数减4
- 如果结果小于 1 则中止脚本
- 在循环中向后删除文件
on run {input, parameters}
set numberOfFilesToDelete to (count input) - 4
if numberOfFilesToDelete < 1 then return
repeat with i from 1 to numberOfFilesToDelete
tell application "Finder" to delete item -i of input
end repeat
return input -- Delete this line if there is no subsequent action
end run
我在现有文件夹中有一堆文件,并尝试使用 Automator 首先生成文件列表,按名称降序排列,然后使用 Applescript 按顺序删除最旧的 2 个文件在该文件夹中维护总共 4 个文件。
下面是我使用的代码:
on run {input, parameters}
if not (count input) > 4 then return
try
repeat with i in items -2 thru -1 of input
# To move to Trash, use Finder.
tell application "Finder" to delete alias (i as text)
end repeat
end try
end run
它运行良好,但当我在该文件夹中总共有 5 个文件时出现问题;该脚本会丢弃最旧的 2 个文件,我最终会得到总共 3 个文件。我如何设置我的 if
或 repeat
语句,以便我可以始终维护总共 4 个文件,并简单地丢弃该文件夹中最旧的额外文件的数量?
简单算法
- 数文件数减4
- 如果结果小于 1 则中止脚本
- 在循环中向后删除文件
on run {input, parameters}
set numberOfFilesToDelete to (count input) - 4
if numberOfFilesToDelete < 1 then return
repeat with i from 1 to numberOfFilesToDelete
tell application "Finder" to delete item -i of input
end repeat
return input -- Delete this line if there is no subsequent action
end run