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

Victoria avatar
By Victoria
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
注意是 Folder Action Scripts, 不是 Folder Action 檔案夾


設定完成之後, 直接把你想轉檔的檔案丟到資料夾裡
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

Daph Bay avatar
By Daph Bay
at 2009-02-12T03:33
Cool!! 原來資料夾動作是這樣用的 感謝
Sierra Rose avatar
By Sierra Rose
at 2009-02-16T19:39
推!有空來學個幾招~
Bennie avatar
By Bennie
at 2009-02-21T00:13
推推推
Robert avatar
By Robert
at 2009-02-22T15:24
學到新東西了! 推!
David avatar
By David
at 2009-02-26T05:59
大推阿~真是長知識呢...
Ethan avatar
By Ethan
at 2009-02-26T11:49
高手
Ida avatar
By Ida
at 2009-02-27T11:18
我沒有要催稿的意思XD 我是迫不及待想學更多東西
Odelette avatar
By Odelette
at 2009-03-04T08:04
我沒有說是誰, 不要對號入座喔!
Skylar Davis avatar
By Skylar Davis
at 2009-03-06T12:08
儼然兇手就在其中一人....XD
Carolina Franco avatar
By Carolina Franco
at 2009-03-11T09:08
所以應該要感謝原po和dpoqb大囉?XD
Rachel avatar
By Rachel
at 2009-03-12T21:12
原來是這樣呀 剛好不解檔案夾動作的使用,push!
Mary avatar
By Mary
at 2009-03-17T01:05
我是用機器人製作動作丟到Automator資料夾裡 用右鍵執行
Oscar avatar
By Oscar
at 2009-03-17T08:28
更正:將做好的.workflow丟到使用者/資源庫Workflows/App-
Steve avatar
By Steve
at 2009-03-18T21:09
lications/Finder裡頭就行囉!
Donna avatar
By Donna
at 2009-03-20T17:21
像這樣http://kuso.cc/4kFV 覺得還挺方便 原始檔也會保留
Zanna avatar
By Zanna
at 2009-03-23T08:38
其實這兩者可以混用, 我再補充一下XD
Tom avatar
By Tom
at 2009-03-24T15:04
超實用的
Rae avatar
By Rae
at 2009-03-29T10:23
圖文版補完 http://tinyurl.com/bu9ygh
Dora avatar
By Dora
at 2009-04-01T20:20
圖文並茂 好文!好文!辛苦了~
Hedy avatar
By Hedy
at 2009-04-02T18:46
push!!!
Jacob avatar
By Jacob
at 2009-04-06T22:58
Daph Bay avatar
By Daph Bay
at 2009-04-07T19:06
之前用過 這真的很好用 Apple說自己OSX先進不是沒道理的

不能上網

Erin avatar
By Erin
at 2009-02-07T23:36
如題 不知電腦突然怎麼了 就不能用乙太網路線上網 修復也不行 小弟是住舍生 平時只要插上去就可以直接上網 不知是有設定到什麼東西嗎 診斷結果 乙太網路 ok 網路設定 ok ISP ok(都亮綠燈) ...

MacHeist3 正式開始囉~又有免費軟體可 …

Callum avatar
By Callum
at 2009-02-07T23:32
提供解答,想自己玩的勿看 首先進入頁面後,會看到四個四成四的密碼盤 但請不要被嚇到 由左至右 1.往下按一下 往上按三下 不用按 往下按兩下 2.打開後會出現一個拼圖 為了方便解說 1 2 3 4 1 口口口口 2 口口口口 3 口口口口 4 口口口口 按( ...

iPhoto 09 與網路服務同步的心得 - facebook

Necoo avatar
By Necoo
at 2009-01-30T10:59
(網誌好讀版 http://tpalice.alhug.com/89) Facebook 同樣的,從工具列點選 Facebook 按鈕上傳圖庫裡的照片,就會在 facebook 建立一個新的相簿 (album),相簿的名稱則是依該照片所隸屬的事件(event)名稱決定 照片和相簿的同步: 不論在 ...

iPhoto 09 與網路服務同步的心得 - flickr

Tom avatar
By Tom
at 2009-01-30T10:54
(網誌好讀版 http://tpalice.alhug.com/89) 自從裝好 iPhoto 09 之後,就玩的不亦樂乎。(本來還有考慮要跳槽到Picasa,但是 現在完全把Picasa丟到一旁)。新功能不論是 Faces (面孔)或 Places(位置) 都有很出色的表現,也很容易上手。 目前人臉識別 ...

有關購買iMac的一些問題!!

Oliver avatar
By Oliver
at 2009-01-25T13:08
※ 引述《uranusjr (←這人是超級笨蛋)》之銘言: : 基於我有買 iMac 的同袍情誼...其實很多都可以做功課做出來 ※ 引述《adimaruko (史朵貝莉)》之銘言: : 最近想購買一台iMac,幾乎每天都在爬文,很認真的做功課哩! : 畢竟一台iMac可不便宜,既然要花大錢的就得好好做 ...