« やばい。またポチッと | トップページ | IE6の葬式なんて »

2010年3月 8日 (月)

Automatorでフォルダーアクションの条件分岐

久々のAutomatorネタです。Automatorは便利ですけど、条件分岐がないのが残念というのよく聞きますねえ。知り合いからフォルダーアクションでファイルの拡張子ごとに処理をするひな形を書いてちょというお願いがあったのですが、ずっと忘れていました

色々とやり方はありますが、ここではAutomatorのアクションをそのまま活かす方法をご紹介します。OSはAutomatorの違いをチェックする時間がないのでSnow Leopardに限定しておきます。

Automatorを起動してフォルダーアクションを選択すると、まずフォルダーアクションを添付するフォルダーを選択します(例ではダウンロードフォルダー)。フォルダーアクションはフォルダー内に出現したファイルのPOSIX pathを次のアクションに渡しますので、ここで「シェルスクリプトの実行」を選んでbash(入力の引き渡し方法は”引数として”)、もしくは「AppleScriptの実行」を選んでAppleScriptで条件分岐を書いて処理をさせるだけです。

シェルから再びAutomatorに処理を渡したい方はAutomatorでの条件分岐 その2 邪道編も合わせてご覧ください。

bashでの例
Bash_7
for f in "$@"
do
 if [ ${f##*.} = "wav" ];
 then
   mv $f ~/Music/WAV;
 elif [ ${f##*.} = "mp3" ];
 then
   mv $f ~/Music/MP3;
 elif [ ${f##*.} = "txt" ];
 then
   mv $f ~/Documents/TEXT;
 elif [ ${f##*.} = "doc" ];
 then
   mv $f ~/Documents/DOC;
 elif [ ${f##*.} = "pdf" ];
 then
   mv $f ~/Documents/PDF;
 fi
done



AppleScriptでの例
As_6
on run {input, parameters}
 tell application "Finder"
  set shorui to file input
  set name to name of shorui
  if (".wav" is in namae) then
    move input to "OSX:Users:misabazooka:Music:WAV"
  else if (".mp3" is in namae) then
    move input to "OSX:Users:misabazooka:Music:MP3"
  else if (".txt" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:TEXT"
  else if (".doc" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:DOC"
  else if (".pdf" is in namae) then
    move input to "OSX:Users:misabazooka:Documents:PDF"
  end if
 end tell
 return input
end run


例ではダウンロードフォルダーに出現したファイルをbashではmvコマンド、AppleScriptではmoveコマンドで拡張子の種類によって別のフォルダーに移動させています。わかりやすくする為にこのように書きましたが、どちらを使うにせよこのままでは役に立ちません。移動先のフォルダーに同名のファイルがあった場合、bashでは上書きされてしまいますし、AppleScriptでは何も処理がされません。そこで条件分岐の後に何らかのチェックをおこなわなくてはなりません。bashでしたら次の例のように同名ファイルが存在するか確認して移動させるといいでしょう。例では同名ファイルが存在する場合何の処理を行いません。

if [ -e ~/Music/WAV/$(basename $f) ]; then :; else mv $f ~/Music/WAV/; fi

AppleScriptではtry ~ on error ~ end tryを使ってエラー時の処理を決めておくか、if文でget exists of fileなどを使って同名ファイルのチェックと同名ファイルが存在した時の処理を書くと良いでしょう。

以上かなり手抜きですが悪しからず







« やばい。またポチッと | トップページ | IE6の葬式なんて »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Automatorでフォルダーアクションの条件分岐:

« やばい。またポチッと | トップページ | IE6の葬式なんて »

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

最近のトラックバック