6

我正在尝试从文件夹的所有内容中递归删除所有标签(OS X 10.9 的新功能之一)。由于文件夹中有很多文件(以及包含更多文件的文件夹),我想尝试使用 Applescript 来简化该过程。我在网上查了一下,没有发现任何有用的东西。

此外,我在 Finder 或 Standard Additions 字典中找不到任何对我有帮助的内容。

可能是这样的:

set folder to "folder_path"
set files to (all files of folder)
for each file:
    check for tag (optional)
    remove all tags from file

PS。上面的代码应该是脚本做什么的指南,而不是使它工作的确切代码。

4

2 回答 2

3

这将从文件夹的文件中递归删除所有标签:

set targetFolder to POSIX path of (choose folder with prompt "Remove all tags from this folder..." default location path to desktop)

do shell script "xattr -rd com.apple.metadata:_kMDItemUserTags " & quoted form of targetFolder
于 2013-11-05T13:42:37.763 回答
1

我认为您遇到的问题是您的文件实际上并没有标签——它们可能只有标签。

尽管 Mavericks 中的新标签系统通过将标签显示为标签来整合旧标签系统,但在 Mavericks 之前的 Mac OS X 版本中标记为黄色的文件实际上可能没有适当的标签。他们只有老派标签,小牛队将其显示为标签。如果您文件上的标签是黄色和蓝色之类的,那么这些标签很可能只是标签。这可能就是您在尝试使用 xattr 删除它们时看到错误的原因。

因此,如果您的文件只有标签,则删除标签的方法与您仍在运行 Mountain Lion 相同。您要求 Finder 将文件的标签索引设置为 0。

此 AppleScript 要求您选择一个文件夹,然后循环遍历该文件夹中的所有文件,如果文件上有标签,则该标签被删除。

tell application "Finder"
    activate
    set theFolder to (choose folder with prompt "Choose a folder to remove labels from the files within:")
    set theFiles to every file of theFolder
    repeat with theFile in theFiles
        if the label index of theFile is not equal to 0 then
            set the label index of theFile to 0
        end if
    end repeat
    open theFolder
end tell

需要明确的是:上面的 AppleScript 只删除了自 Mac OS X 之前就存在的 7 种标准标签/标签颜色。如果您通过打开 Get Info 窗口并输入项目名称或类似的东西来手动标记 Mavericks 中的文件一个标签,那么该标签将必须通过上面 adayzdone 的响应中所述的 shell 脚本删除。

于 2014-08-14T04:34:56.847 回答