OS X - AppleScript Вопрос о перемещении файлов ежедневно в другую папку (папки различаются)

apple.stackexchange https://apple.stackexchange.com/questions/2892

Вопрос

Я сейчас использую это ( http://lifehacker.com/193778/download-of-day-auto+applescript-tickler-file ) для файловой системы Tickler и установить ее в моем Dropbox (так что она работает в разных системах). Есть лишь пара вещей от того, чтобы сделать его идеальным. Если кто -то может помочь мне, это было бы превосходно.

То, что я ищу, это сценарий или рабочий процесс, который будет принимать содержание папок на предыдущий день (они меняются каждый день и пронумерованы) и перемещают их в текущий день. Итак, я могу установить его как тревогу, чтобы выступать утром каждый день.

Спасибо большое.

Это было полезно?

Решение

Если я правильно понимаю ваши требования, то этот сценарий должен делать то, что вы хотите. Обязательно измените имя пользователя на первой строке на ваше имя пользователя.

set username to "lizzan"

set cy to (year of (current date)) as integer
set cm to (month of (current date)) as integer
set cd to (day of (current date)) as integer

set yd to yesterday(cy, cm, cd)

set yy to item 1 of yd
set ym to item 2 of yd
set yd to item 3 of yd


set yFolder to "Macintosh HD:Users:" & username & ":Documents:To Do:" & yy & ":" & ym & ":" & yd
set cFolder to "Macintosh HD:Users:" & username & ":Documents:To Do:" & cy & ":" & cm & ":" & cd

tell application "Finder"
    move every file of folder yFolder to cFolder
end tell

on yesterday(y, m, d)
    set d to d - 1

    if d ≤ 0 then
        set m to m - 1
        if m ≤ 0 then
            set y to y - 1
            set m to 12
        end if
        set thirtyones to {1, 3, 5, 7, 8, 10, 12}
        set thirties to {4, 6, 9, 11}
        if m is in thirtyones then
            set d to 31
        else if m is in thirties then
            set d to 30
        else if leapyear(y) then
            set d to 29
        else
            set d to 28
        end if

    end if

    set yd to {y, m, d}
    return yd

end yesterday

on leapyear(y)
    if y mod 4 is 0 then
        if y mod 100 is 0 then
            if y mod 400 is 0 then
                return true
            end if
            return false
        end if
        return true
    end if

    return false

end leapyear

Предостережение: скрипт потерпит неудачу (и перенесет, возможно, только некоторые из ваших файлов), если в папке уже есть файл с тем же именем. Если вы хотите заменить файлы в этом случае и избежать сбоя, добавьте with replacing в конце строки 18 (move every ... to cFolder with replacing).

Редактировать, чтобы добавить: О, только что увидел, что вы настроили в своем Dropbox, а не в папке Documents. Просто измените пути на строках 14 и 15, чтобы отразить путь, который вы используете, и это должно быть хорошо.

Другие советы

Очень простое решение - это Приложение для автоматиза (рабочий процесс, который работает независимо). Потребовалось около 15 секунд (буквально), чтобы установить этот рабочий процесс:alt text

Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top