使用Applescript修改文件标签

时间:2013-11-05 07:51:23

标签: applescript osx-mavericks

我试图以递归方式从文件夹的所有内容中删除所有标记(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。上面的代码应该是脚本执行操作的指南,而不是使其工作的确切代码。

2 个答案:

答案 0 :(得分:2)

这将以递归方式从文件夹的文件中删除所有标记:

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

答案 1 :(得分:0)

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

尽管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种标准标签/标签颜色。如果您通过打开“获取信息”窗口并输入项目名称或其他内容手动标记Mavericks中的文件像那样作为标签,那么必须通过shell脚本删除该标签,如adayzdone上面的回复中所述。