使用Applescript修改文件标记

使用Applescript修改文件标记,applescript,osx-mavericks,Applescript,Osx Mavericks,我试图递归地从文件夹的所有内容中删除所有标记(OSX10.9的新功能之一)。由于文件夹中有许多文件(以及包含更多文件的文件夹),我想尝试使用Applescript使过程更简单。我在网上查过了,没有发现任何有用的东西 而且,我在Finder或StandardAdditions字典中找不到任何对我有帮助的东西 可能是这样的: set folder to "folder_path" set files to (all files of folder) for each file: check

我试图递归地从文件夹的所有内容中删除所有标记(OSX10.9的新功能之一)。由于文件夹中有许多文件(以及包含更多文件的文件夹),我想尝试使用Applescript使过程更简单。我在网上查过了,没有发现任何有用的东西

而且,我在Finder或StandardAdditions字典中找不到任何对我有帮助的东西

可能是这样的:

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

注:上述代码应该是脚本功能的指南,而不是使其工作的确切代码。

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

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

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

尽管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中的文件,然后,必须按照上面adayzdone的响应中所述,通过shell脚本删除该标记。

当使用
mdls~/Desktop/Folder/test.rtf
时,我可以看到
kMDItemUserTags
属性,但当我尝试使用
xattr-rd com.apple.metadata…
,出现一个错误,提示
没有这样的xattr:com.apple.metatdata:\u kMDItemUserTags
您可以发布一个示例文件吗?