스크립트는 다음과 같습니다.
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file ("/Volumes/Xsan/PathTo/Folder") as alias
repeat with f in entire contents of dir
if comment of f does not start with "Archived" then
set comment of f to "Archived " & d
set label index of f to 2
end if
end repeat
end tell
내 문제는 수천 개의 이미지와 폴더가 있는 폴더에서 이것을 실행하고 있다는 것입니다. Finder는 CPU 사용량이 약 90%에 달하며 주석과 레이블을 설정하는 데 파일/폴더당 약 40초가 걸립니다.
누구나 제안할 수 있는 최적화가 있습니까? 아니면 이 작업을 100% Bash 스크립트로 구현할 수 있도록 코드를 변경하시겠습니까? (속도에 도움이 되는 경우)
"전체 내용" 명령에 문제를 일으키는 뭔가가 있을 수 있다고 생각합니다.
특정 파일이나 폴더를 변경하기 전과 마찬가지로 단일 변경을 수행한 후 모든 파일에서 "보관됨" 태그를 다시 확인합니다. 처음에는 이것이 메모리에 캐시될 것이라고 생각했습니다.
당신이 가지고 있는 어떤 아이디어라도 좋아할 것입니다!
건배,
제임스
편집: 시스템은 Snow Leopard Server 10.6.8, Xserve2,1입니다.
답변1
이 시도:
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file "/Volumes/Xsan/PathTo/Folder" as alias
set eContents to entire contents of dir
repeat with f in my eContents
if comment of f does not start with "Archived" then
set comment of f to "Archived " & d
set label index of f to 2
end if
end repeat
end tell
set time2 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set millisec to (round ((time2 - time1) * 1000))
또는
set time1 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set d to do shell script "date +%d-%m-%Y"
tell application "Finder"
set dir to POSIX file "/Volumes/Xsan/PathTo/Folder" as alias
set eContents to every file of (entire contents of dir) whose comment does not start with "Archived"
repeat with f in my eContents
set comment of f to "Archived " & d
set label index of f to 2
end repeat
end tell
set time2 to do shell script "perl -e 'use Time::HiRes qw(time); print time'"
set millisec to (round ((time2 - time1) * 1000))