Mac を使っていてときどき“面倒だな~”って思うことがあります。
僕の場合は、“フォルダ同士の上書きコピー”です。
Windows であれば、「・・・同じ名前の場合、新しいファイルで上書き・・・」というメッセージが出で処理を選択できるのですが、この下にさらにフォルダがあると何度もこのメッセージがでるため、あまり使い勝手がよくありません。
しかし、Mac OS 9 / Mac OS X ではフォルダを上書きした場合、フォルダの入れ替えになりますので、Windowsのように中身をマージしません。
でも、こういう場合、Mac ならAppleScriptがあるんです。
--- Script コード ---
on run
(* 2つフォルダを選択してcopyFolder という処理を行います *)
set aFolder to choose folder
set bFolder to choose folder
copyFolder(aFolder, bFolder) of me
end run
on copyFolder(aFolder, bFolder)
tell application "Finder"
set fileList to get every file of aFolder
set folderList to get every folder of aFolder
(* まずは、フォルダ以外でコピー作業 *)
repeat with afile in fileList
try
(* 重複があるとここでエラーになる *)
duplicate afile to bFolder
on error
set tfile to item (name of afile) of bFolder
(* ここがポイント ファイル同士の日付けの比較 *)
if (modification date of afile) > (modification date of tfile) then
duplicate afile to bFolder with replacing
end if
end try
end repeat
(* フォルダのコピー作業です。 コピーで重複エラーになるということは同じ名前のフォルダがあるということなので、そのフォルダとコピーしようとするフォルダでさらに中身のコピー作業をします。 *)
repeat with aFolder in folderList
try
duplicate aFolder to bFolder
on error
(* サブフォルダをコピーしたくない場合は、以下の2行を削除します。 *)
set tfolder to item (name of aFolder) of bFolder
copyFolder(aFolder, tfolder) of me
end try
end repeat
end tell
end copyFolder
--- Script コード ---
以上の Script コード をコピーして、“スクリプト編集プログラム(Script Editer)注1 ”にペーストし、ファイル - 保存 しておきます。
動作を確認したい場合、“スクリプト編集プログラム”上で 制御 - 実行 を行ってください。
注1 Mac OS 9 の場合、Applications (Mac OS 9) の中のApple エクストラ:AppleScript の中にあります。Mac OS X の場合、/Applications/AppleScript/ の中にある、Script Editer が同じアプリケーションです。