![Automator 的“过滤查找器项目”操作是否损坏?](https://linux22.com/image/1255647/Automator%20%E7%9A%84%E2%80%9C%E8%BF%87%E6%BB%A4%E6%9F%A5%E6%89%BE%E5%99%A8%E9%A1%B9%E7%9B%AE%E2%80%9D%E6%93%8D%E4%BD%9C%E6%98%AF%E5%90%A6%E6%8D%9F%E5%9D%8F%EF%BC%9F.png)
我一直在尝试制作一个 Automator droplet,用于从目录中删除特定扩展名的文件。我的工作流程有 3 个操作(当我不在调试时):
- 获取文件夹内容(对每个子文件夹重复)
- 过滤查找器项目(文件扩展名为“part”)
- 将 Finder 项目移至废纸篓
似乎 #2 给我带来了问题。无论我做什么,都没有文件通过其过滤器。当我展开“获取文件夹内容”和任何其他 Finder 操作的结果时,我总是在结果中看到文件。但即使我指定了最宽松的过滤器,此操作也不会产生任何结果。
如果您想调试这个,只需在顶部插入一个新操作:获取指定的 Finder 项目,放到任何包含任何文件的目录中 - 尽管从技术上讲“过滤 Finder 项目”也应该能够返回文件夹。
更新
我现在使用的是 Lion,看到了完全相同的行为。我还尝试将步骤 2 的标准替换为“名称以‘part’结尾”,但这也没有什么不同。我最终编写了一个完成相同任务的 AppleScript(见下文)。
答案1
检查您的 Spotlight 隐私偏好设置。如果您正在使用的文件夹未被 Spotlight 索引,则过滤命令将找不到任何内容。
答案2
似乎新添加到文件夹中的文件(如工作流程中前面部分所示)在结果中缺失。例如,查看我所附的工作流程图片(第一张只是获取文件夹内容)。
答案3
我编写了一个 AppleScript 来完成相同的任务,但我不会接受这个答案,因为我仍然认为 Automator 出了问题(或者我没有理解它的一些基本原理)。这是用于 droplet 的 AppleScript,它接受一个或多个文件夹并删除所有以 结尾的文件,.part
并且已经完美运行了几个月(在 Snow Leopard 和 Lion 上)。
on open theItems
repeat with theItem in theItems
set theInfo to info for theItem
--Verify dropped items are folders
if not folder of theInfo then
my warnUser(theInfo's name)
else
--Empty out the .part files
my removePartFiles(theItem)
end if
end repeat
end open
on run
my warnUser(missing value)
-- Used for debugging
--my removePartFiles("Macintosh HD:Users:Username:Some Test Folder:" as alias)
end run
-- Calls itself recursively
on removePartFiles(RootDirectory)
tell application "Finder"
delete (every file of RootDirectory whose name ends with ".part")
set subFolders to folders of RootDirectory
repeat with eachFolder in subFolders
my removePartFiles(eachFolder)
end repeat
end tell
end removePartFiles
on warnUser(itemName)
set msg to "Please drop folder(s) onto me"
if itemName is not missing value then set msg to "'" & itemName & "' is not a folder"
display alert msg as warning buttons {"OK"} default button "OK"
end warnUser
答案4
我也一直在努力实现这个更精细的操作。我一直在测试一个文件夹操作,该操作会过滤传入到我的下载文件夹的文件,然后对其进行处理。在我的测试中,新文件可能需要 2 秒或更长时间才能出现在 Spotlight 索引中。所以我不得不在操作脚本的顶部放置一个简单的“等待”,当设置为 2 秒时,它似乎可以工作,但最近我不得不增加它,5 秒似乎更可靠。实际上这没有问题,因为我使用操作脚本缩小并转换为 JPEG 照片,然后通过 AirDrop 从我的 iPhone 发送到我的笔记本电脑。5 秒的延迟不会造成问题。