2

Это скрипт:

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

Моя проблема в том, что я запускаю это в папке с тысячами изображений и папок. Средство поиска занимает примерно 90% загрузки процессора, и для установки комментария и метки требуется примерно 40 секунд на файл / папку.

Есть ли какая-то оптимизация, которую может предложить каждый. Или, в качестве альтернативы, изменение кода, которое позволит 100% -ной реализации сценария Bash этой задачи? (Если это помогает со скоростью).

Я чувствую, что в команде "все содержимое" может быть что-то не так.

Как и до внесения изменений в данный файл или папку, он проверяет наличие тегов "Archived" на ВСЕХ файлах после внесения одного изменения. Я думал, что это будет храниться в памяти в начале.

Буду любить любые идеи, которые вы можете иметь!

Ура,

Джеймс

редактировать: система Snow Leopard Server 10.6.8, Xserve2,1

1 ответ1

2

Попробуй это:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .