4 votes

OS X - Question AppleScript sur le déplacement quotidien de fichiers vers un autre dossier (les dossiers varient)

J'utilise actuellement cette ( http://lifehacker.com/193778/download-of-the-day--auto+applescript-tickler-file ) pour un système de fichiers de contrôle et je l'ai configuré dans ma Dropbox (pour qu'il fonctionne sur tous les systèmes). Il ne reste plus que deux ou trois choses à faire pour qu'il soit parfait. Si quelqu'un peut m'aider, ce serait superbe.

Ce que je recherche est un script ou un workflow qui prendrait le contenu des dossiers du jour précédent (ils changent chaque jour et sont numérotés) et le déplacerait vers le jour actuel. Ainsi, je peux programmer cette opération comme une alarme à exécuter le matin tous les jours.

Merci beaucoup.

2voto

aku Points 54867

Si je comprends bien vos exigences, ce script devrait faire ce que vous voulez. Assurez-vous de changer le nom d'utilisateur sur la première ligne par votre nom d'utilisateur.

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

Attention : Le script script échouera (et n'aura peut-être déplacé que certains de vos fichiers) s'il existe déjà un fichier portant le même nom dans le dossier vers lequel il est déplacé. Si vous voulez remplacer les fichiers dans ce cas, et éviter l'échec, ajoutez with replacing à la fin de la ligne 18 ( move every ... to cFolder with replacing ).

Modifier pour ajouter : Oh, je viens de voir que vous l'aviez installé dans votre Dropbox au lieu du dossier Documents. Modifiez simplement les chemins d'accès aux lignes 14 et 15 pour refléter le chemin d'accès que vous utilisez, et tout devrait bien se passer.

2voto

Jeff Swensen Points 581

Une solution très simple consiste à utiliser un Application Automator (flux de travail indépendant). Il a fallu environ 15 secondes (littéralement) pour mettre en place ce flux de travail : alt text

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X