2013-11-05 5 views
4

폴더의 모든 내용에서 모든 태그 (OS X 10.9의 새로운 기능 중 하나)를 반복적으로 제거하려고합니다. 폴더 (및 추가 파일을 포함하는 폴더)에 많은 파일이 있으므로 Applescript를 사용하여 프로세스를 더 쉽게 만들려고했습니다. 나는 온라인으로 보았고 유용한 것을 발견하지 못했습니다.AppleScript로 파일 태그 수정

또한 파인더 또는 표준 추가 사전에서 도움이되는 항목을 찾을 수 없습니다. 이 같은 작품

아마 뭔가 :

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

이 재귀 적 폴더의 파일에서 모든 태그를 제거합니다 :

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 
+0

'mdls ~/Desktop/Folder/test.rtf'를 사용하면'kMDItemUserTags' 속성을 볼 수 있지만'xattr -rd com.apple.metadata ... '를 사용하려고하면 오류가 나타납니다 'No such xattr : com.apple.metatdata : _kMDItemUserTags' – Hacker

+0

예제 파일을 게시 할 수 있습니까? – adayzdone

0

나는 당신이 겪고있는 문제는 파일이 실제로 그들에 태그를하지 않아도 생각 - 그들은 아마 레이블이 있습니다.

Mavericks의 새 태그 시스템은 레이블을 태그로 표시하여 이전 레이블 시스템을 통합하기 위해 제작되었지만 Mac OS X 버전에서 Mavericks 이전에 노란색으로 표시된 파일에는 실제로는 적절한 태그가 없을 수 있습니다. 그들은 매버릭스가 태그로 보여주는 오래된 학교 라벨을 가지고 있습니다. 파일의 태그가 노란색과 파란색과 같은 경우 태그는 단지 레이블 일뿐입니다. 그래서 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 

는 명확하게하려면, 위의 애플 스크립트는 사용자가 수동으로 열어 매버릭스에서 파일을 태그하면 맥 OS X를 이전부터 존재 한 7 표준 태그/라벨 색상을 제거하는 A의 정보 창 및 입력을 받기 프로젝트 이름 또는 그런 태그를 태그로 사용한다면 위의 adayzdone의 응답에 설명 된대로 쉘 스크립트를 통해 해당 태그를 제거해야합니다.