Applescript lamentavelmente lento Finder.app definir comentário

Applescript lamentavelmente lento Finder.app definir comentário

Este é o roteiro:

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 atinge cerca de 90% do uso da CPU e leva cerca de 40 segundos POR ARQUIVO/PASTA para definir o comentário e o rótulo.

Existe alguma otimização que alguém possa sugerir. Ou alternativamente, uma alteração no código que permitirá uma implementação 100% Bash script desta tarefa? (Se isso ajudar com velocidade).

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

Como antes de fazer uma alteração em um determinado arquivo ou pasta, ele verifica novamente as tags "Arquivado" em TODOS os arquivos após fazer uma única alteração. Achei que isso seria armazenado em cache na memória no início.

Adoraria qualquer ideia que você possa ter!

Saúde,

James

editar: O sistema é Snow Leopard Server 10.6.8, Xserve2,1

Responder1

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

informação relacionada