Mac scripting: 淺談檔案夾動作 - MAC

By Victoria
at 2009-02-09T16:12
at 2009-02-09T16:12
Table of Contents
前陣子本來想寫, 可是寫一寫把草稿弄丟了 orz
本來想就放棄, 可是昨天被人寄信來催稿...
還是想辦法重寫一篇
所謂檔案夾動作, 是 Mac OS X 提供的一種自動化機制
這個功能可以附加在任何檔案夾上, 在檔案夾產生「事件」時, 就會被觸發
可以使用的事件包括:
* 檔案夾內容增加(被放入新檔案)或移除
* 檔案夾被 Finder 打開, 或在 Finder 視窗中被關閉
* 檔案夾本身被移動
以這些事件為基礎, 我們就可以做出一些方便的功能
例如你是老闆, 正在等手下傳來某個關鍵文件
可是你可能正在寫一份重要文章, 不想每五分鐘就去檢查投遞箱
那麼你就可以在投遞箱檔案夾加上一個動作
這樣, 當檔案夾收到這份文件時, Finder 就會自動跳出一個視窗告訴你
這個動作其實不少見, 例如 Mac 上很廣泛使用的 Growl 就是類似的延伸
檔案夾動作的功能沒有那麼多, 也只能和 Finder 連動
可是它也有自己的優勢, 也有只有它才做得到的自動化功能
以一個例子來說明檔案夾動作的使用法...
假設我在寫部落格, 想在文章裡放圖片
可是我手上的圖可能是 tiff 檔, 可是為了網頁速度, 我想轉小一點
當然用預覽程式就可以轉, 可是這樣很麻煩
那麼我就可以用檔案夾動作, 把我選擇的檔案都直接轉檔
首先我建立一個資料夾, 名稱隨便取
http://dl.getdropbox.com/u/207871/folder_action/1.png

如果你從來沒有用過檔案夾動作, 那要先從輔助選單裡啟用
http://dl.getdropbox.com/u/207871/folder_action/2.png

接著附加你想要的檔案夾動作
http://dl.getdropbox.com/u/207871/folder_action/3.png

我們這邊用內建的 Duplicate as JPEG
http://dl.getdropbox.com/u/207871/folder_action/4.png

如果檔案選擇視窗沒有帶你到正確的位置, 這個檔案在
/Library/Scripts/Folder Action Scripts/
http://dl.getdropbox.com/u/207871/folder_action/4-2.png

設定完成之後, 直接把你想轉檔的檔案丟到資料夾裡
http://dl.getdropbox.com/u/207871/folder_action/5.png

就會自動幫你轉好檔, 放在資料夾裡面(原始檔也留著)
http://dl.getdropbox.com/u/207871/folder_action/6.png

如果你不想要一個檔案夾動作, 那可以從輔助選單中同樣直接移除
或者, 如果你希望比較詳細的設定, 可以選擇「設定檔案夾動作」, 出現類似這個視窗
http://dl.getdropbox.com/u/207871/folder_action/7.png

最上面可以啟用或停用「全部」的檔案夾動作(和選單裡的選項功能一樣)
左邊是你有使用檔案夾動作的所有檔案夾, 右邊是上面使用的工序指令
如果你想增加、減少或編輯都可以在這裡面完成
這樣就是基本的檔案夾動作使用了
Mac OS X 會預附給你 13 個檔案夾動作工序指令
add - new item alert.scpt 檔案夾增加物件時, 跳出視窗
close - close sub-folders.scpt 關閉視窗時, 一起關閉所有子檔案夾視窗
convert - PostScript to PDF.scpt 把 PostScript 轉成 PDF
Image - Add Icon.scpt 把檔案夾裡所有圖片檔以圖片內容作為圖示
Image - Duplicate as JPEG.scpt 轉成 JPEG
Image - Duplicate as PNG.scpt 轉成 PNG
Image - Duplicate as TIFF.scpt 轉成 TIFF
Image - Flip Horizontal.scpt 把圖片水平翻轉
Image - Flip Vertical.scpt 垂直翻轉
Image - Info to Comment.scpt 把圖片資訊放到檔案註釋
Image - Rotate Left.scpt 圖片向左旋轉
Image - Rotate Right.scpt 向右旋轉
open - show comments in dialog.scpt 打開該檔案夾時, 跳出視窗顯示註釋
另外如果有需求, 也可以用 AppleScript 自己寫
AppleScript 的寫法沒辦法在這邊講, 所以這邊只提和檔案夾動作有關的寫法
詳細的 AppleScript 指令就請自己學, 或等我有時間再分享
檔案夾動作工序指令是以 handler 為基礎
on - end 負責控制當什麼 event 發生時, 要執行該工序指令
例如 10.5 的 stacks, 因為不太好看所以有人做了抽屜圖示
http://dl.getdropbox.com/u/207871/folder_action/8.png

如果要把抽屜擺在最上面, 那就把抽屜的檔名以空白開頭, 然後以名稱排列就行了
可是裡面有個 Downloads 資料夾很麻煩
通常我們會希望 Downloads 裡面是最新放入的放在最上面
可是這樣每次有新東西, 抽屜就會跑到下面去
這種時候我們也可以用檔案夾動作, 讓 Finder 幫我們自己移動抽屜圖示
例如可以打開工序指令編寫程式(/Applications/AppleScript/ 裡面)
然後這樣寫...
on adding folder items to theFolder after receiving addedItems
tell application "Finder"
set allFiles to name of every file of theFolder
repeat with theItem in allFiles
if theItem begins with " " then
set theIcon to theItem
exit repeat
end if
end repeat
move file theIcon of theFolder to home
move file theIcon of home to theFolder
end tell
end adding folder items to
http://dl.getdropbox.com/u/207871/folder_action/9.png

存成工序指令檔, 放在哪都可以(和原廠的放在一起比較好找)
http://dl.getdropbox.com/u/207871/folder_action/10.png

然後把 Downloads 檔案夾附夾這個動作
http://dl.getdropbox.com/u/207871/folder_action/11.png

另外記得把抽屜圖示取個以空白開頭的檔名
這樣只要在檔案夾被加入新檔案(on adding folder items to theFolder)
Finder 就會找出圖示檔的檔名(找出所有檔案, 用 repeat 找到空白開頭的檔)
然後把圖示移出資料夾, 然後再移回來(兩行 move)
這樣就可以確保圖示是最後加入的檔案, 進而被放在最上面
http://dl.getdropbox.com/u/207871/folder_action/12.gif

如果有興趣, 也可以自己打開原廠附帶的 scpt 檔研究一下
大概就這樣囉 :Q
--
Tags:
MAC
All Comments

By Daph Bay
at 2009-02-12T03:33
at 2009-02-12T03:33

By Sierra Rose
at 2009-02-16T19:39
at 2009-02-16T19:39

By Bennie
at 2009-02-21T00:13
at 2009-02-21T00:13

By Robert
at 2009-02-22T15:24
at 2009-02-22T15:24

By David
at 2009-02-26T05:59
at 2009-02-26T05:59

By Ethan
at 2009-02-26T11:49
at 2009-02-26T11:49

By Ida
at 2009-02-27T11:18
at 2009-02-27T11:18

By Odelette
at 2009-03-04T08:04
at 2009-03-04T08:04

By Skylar Davis
at 2009-03-06T12:08
at 2009-03-06T12:08

By Carolina Franco
at 2009-03-11T09:08
at 2009-03-11T09:08

By Rachel
at 2009-03-12T21:12
at 2009-03-12T21:12

By Mary
at 2009-03-17T01:05
at 2009-03-17T01:05

By Oscar
at 2009-03-17T08:28
at 2009-03-17T08:28

By Steve
at 2009-03-18T21:09
at 2009-03-18T21:09

By Donna
at 2009-03-20T17:21
at 2009-03-20T17:21

By Zanna
at 2009-03-23T08:38
at 2009-03-23T08:38

By Tom
at 2009-03-24T15:04
at 2009-03-24T15:04

By Rae
at 2009-03-29T10:23
at 2009-03-29T10:23

By Dora
at 2009-04-01T20:20
at 2009-04-01T20:20

By Hedy
at 2009-04-02T18:46
at 2009-04-02T18:46

By Jacob
at 2009-04-06T22:58
at 2009-04-06T22:58

By Daph Bay
at 2009-04-07T19:06
at 2009-04-07T19:06
Related Posts
不能上網

By Erin
at 2009-02-07T23:36
at 2009-02-07T23:36
MacHeist3 正式開始囉~又有免費軟體可 …

By Callum
at 2009-02-07T23:32
at 2009-02-07T23:32
iPhoto 09 與網路服務同步的心得 - facebook

By Necoo
at 2009-01-30T10:59
at 2009-01-30T10:59
iPhoto 09 與網路服務同步的心得 - flickr

By Tom
at 2009-01-30T10:54
at 2009-01-30T10:54
有關購買iMac的一些問題!!

By Oliver
at 2009-01-25T13:08
at 2009-01-25T13:08