4 votos

OS X - AppleScript Pregunta sobre el movimiento diario de archivos a otra carpeta (las carpetas varían)

Actualmente estoy utilizando esto ( http://lifehacker.com/193778/download-of-the-day--auto+applescript-tickler-file ) para un sistema de archivos de cosquilleo y lo tengo configurado en mi Dropbox (para que funcione en todos los sistemas). Sólo faltan un par de cosas para que sea perfecto. Si alguien puede ayudarme sería magnífico.

Lo que busco es un script o flujo de trabajo que tome el contenido de las carpetas del día anterior (cambian cada día y están numeradas) y lo traslade al día actual. De esta manera, puedo establecerlo como una alarma para que se ejecute por la mañana todos los días.

Muchas gracias.

2voto

aku Puntos 54867

Si entiendo bien tus requisitos, entonces este script debería hacer lo que quieres. Asegúrese de cambiar el nombre de usuario en la primera línea a su nombre de usuario.

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

Advertencia: El script fallará (y habrá movido posiblemente sólo algunos de sus archivos) si ya hay un archivo con el mismo nombre en la carpeta a la que se está moviendo. Si quiere reemplazar los archivos en ese caso, y evitar el fallo, añada with replacing al final de la línea 18 ( move every ... to cFolder with replacing ).

Editar para añadir: Ah, acabo de ver que lo tenías configurado en tu Dropbox en lugar de en la carpeta Documentos. Sólo tienes que cambiar las rutas en las líneas 14 y 15 para reflejar la ruta que estás usando, y debería estar bien.

2voto

David Locke Puntos 128

Una solución muy sencilla es un Aplicación Automator (flujo de trabajo que se ejecuta de forma independiente). Tardé unos 15 segundos (literalmente) en configurar este flujo de trabajo: alt text

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X