Applescript Woefily Slow Finder.app Definir comentário

2

Este é o script:

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

Meu problema é que estou executando isso em uma pasta com milhares de imagens e pastas. O Finder vai para cerca de 90% da utilização da CPU e demora cerca de 40 segundos POR ARQUIVO / PASTA para definir o comentário e o rótulo.

Existe alguma otimização que qualquer um pode sugerir. Ou, como alternativa, uma alteração no código que permitirá uma implementação de script Bash de 100% dessa tarefa? (Se isso ajuda com a velocidade).

Sinto que pode haver algo no comando "todo o conteúdo" que está atrapalhando as coisas.

Como antes de fazer uma alteração em um determinado arquivo ou pasta, ele está verificando as tags de "Arquivados" em TODOS os arquivos novamente depois de fazer uma única alteração. Eu pensei que isso seria armazenado em cache na memória no começo.

Adoraria qualquer ideia que você pudesse ter!

Felicidades,

James

edit: O sistema é o Snow Leopard Server 10.6.8, Xserve2,1

    
por James 25.09.2012 / 07:44

1 resposta

2

Tente isto:

    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))

ou

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))
    
por 25.09.2012 / 12:57