OS X - AppleScript Domanda sullo spostamento quotidiano dei file in un'altra cartella (le cartelle variano)

4

Attualmente sto usando questo ( link ) per un tickler file system e averlo installato nel mio Dropbox (quindi funziona su tutti i sistemi). Ci sono solo un paio di cose da renderlo perfetto. Se qualcuno mi può aiutare sarebbe fantastico.

Quello che voglio è uno script o un flusso di lavoro che prenderà i contenuti delle cartelle per il giorno precedente (cambiano ogni giorno e sono numerati) e li spostano nel giorno corrente. Quindi posso impostarlo come sveglia da eseguire ogni mattina al mattino.

Grazie mille.

    
posta Sulcalibur 05.10.2010 - 10:34
fonte

2 risposte

2

Se comprendo correttamente i tuoi requisiti, allora questo script dovrebbe fare ciò che vuoi. Assicurati di cambiare il nome utente sulla prima riga con il tuo nome utente.

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

Avvertenza: lo script fallirà (e probabilmente avrà spostato solo alcuni dei tuoi file) se esiste già un file con lo stesso nome nella cartella in cui si sta spostando. Se vuoi sostituire i file in quel caso ed evitare di fallire, aggiungi with replacing alla fine della riga 18 ( move every ... to cFolder with replacing ).

Modifica da aggiungere: Oh, hai appena visto che l'hai configurato nella tua Dropbox anziché nella cartella Documenti. Basta cambiare i percorsi sulle linee 14 e 15 per riflettere il percorso che stai utilizzando, e dovrebbe andare bene.

    
risposta data 11.11.2010 - 17:49
fonte
2

Una soluzione molto semplice è un'applicazione Automator (flusso di lavoro che funziona in modo indipendente). Ci sono voluti circa 15 secondi (letteralmente) per impostare questo flusso di lavoro:

    
risposta data 13.11.2010 - 05:07
fonte

Leggi altre domande sui tag