Mac OSの使い方/Mac OS 関連情報

フォルダ同士の更新コピー

“フォルダ同士のコピー”というのは、なかなか自分のやりたいようにできない場合が多いですね。そんなときにAppleScriptが大活躍します。

木下 幹司

執筆者:木下 幹司

Macガイド

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 が同じアプリケーションです。

  • 1
  • 2
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます