OS X - AppleScript -Frage zum täglichen Verschieben von Dateien in einen anderen Ordner (Ordner variieren)

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

Frage

Ich benutze das derzeit ( http://lifeehacker.com/193778/downloadof- the-the-day-auto+Applescript-tickler-file ) für ein Tickler -Dateisystem und lassen Sie es in meiner Dropbox eingerichtet (so dass es über Systeme hinweg funktioniert). Es gibt nur ein paar Dinge, die es perfekt machen. Wenn mir jemand helfen kann, wäre das großartig.

Was ich nach bin, ist ein Skript oder einen Workflow, der den Ordnergehalt für den Vortag nimmt (sie ändern sich jeden Tag und sind nummeriert) und verschieben sie auf den aktuellen Tag. Also kann ich es als Alarm einstellen, um jeden Tag morgens auszuführen.

Vielen Dank.

War es hilfreich?

Lösung

Wenn ich Ihre Anforderungen richtig verstehe, sollte dieses Skript das tun, was Sie wollen. Stellen Sie sicher, dass Sie den Benutzernamen in der ersten Zeile in Ihren Benutzernamen ändern.

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

Vorbehalt: Das Skript schlägt fehl (und hat möglicherweise nur einige Ihrer Dateien verschoben), wenn bereits eine Datei mit demselben Namen im Ordner vorhanden ist, in den es verschoben wird. Wenn Sie die Dateien in diesem Fall ersetzen und vermeiden möchten, fügen Sie es zu vermeiden with replacing Am Ende von Zeile 18 (move every ... to cFolder with replacing).

Bearbeiten, um hinzuzufügen: Oh, habe gerade gesehen, dass Sie es in Ihrer Dropbox anstelle im Ordner dokumentieren lassen. Ändern Sie einfach die Pfade in den Zeilen 14 und 15, um den Pfad zu reflektieren, den Sie verwenden, und es sollte in Ordnung sein.

Andere Tipps

Eine sehr einfache Lösung ist eine Automatoranwendung (Workflow, der unabhängig läuft). Es dauerte ungefähr 15 Sekunden (buchstäblich), um diesen Workflow einzulegen:alt text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit apple.stackexchange
scroll top