使用Applescript修改文件标记
我试图递归地从文件夹的所有内容中删除所有标记(OSX10.9的新功能之一)。由于文件夹中有许多文件(以及包含更多文件的文件夹),我想尝试使用Applescript使过程更简单。我在网上查过了,没有发现任何有用的东西 而且,我在Finder或StandardAdditions字典中找不到任何对我有帮助的东西 可能是这样的:使用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
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
您可以发布一个示例文件吗?