私があなたの要求を正しく理解しているなら、このスクリプトはあなたが望むことをするべきです。最初の行のユーザー名を必ず自分のユーザー名に変更してください。
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
)
追加するために編集して下さい: ああ、ちょうどあなたがそれをDocumentsフォルダの代わりにあなたのDropboxの中に設定したのを見た。使用しているパスを反映するように14行目と15行目のパスを変更するだけで、問題ありません。