Mac scripting: 淺談檔案夾動作

看板MAC (蘋果Mac)作者 (←這人是超級笨蛋)時間16年前 (2009/02/09 16:12), 編輯推噓16(1606)
留言22則, 15人參與, 最新討論串1/2 (看更多)
前陣子本來想寫, 可是寫一寫把草稿弄丟了 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.100.141 ※ 編輯: uranusjr 來自: 220.132.100.141 (02/09 16:17)

02/09 16:18, , 1F
Cool!! 原來資料夾動作是這樣用的 感謝
02/09 16:18, 1F

02/09 16:28, , 2F
推!有空來學個幾招~
02/09 16:28, 2F

02/09 16:31, , 3F
推推推
02/09 16:31, 3F

02/09 17:07, , 4F
學到新東西了! 推!
02/09 17:07, 4F

02/09 17:08, , 5F
大推阿~真是長知識呢...
02/09 17:08, 5F

02/09 17:09, , 6F
高手
02/09 17:09, 6F

02/09 17:56, , 7F
我沒有要催稿的意思XD 我是迫不及待想學更多東西
02/09 17:56, 7F

02/09 18:20, , 8F
我沒有說是誰, 不要對號入座喔!
02/09 18:20, 8F

02/09 18:24, , 9F
儼然兇手就在其中一人....XD
02/09 18:24, 9F

02/09 18:31, , 10F
所以應該要感謝原po和dpoqb大囉?XD
02/09 18:31, 10F

02/09 18:40, , 11F
原來是這樣呀 剛好不解檔案夾動作的使用,push!
02/09 18:40, 11F

02/09 18:43, , 12F
我是用機器人製作動作丟到Automator資料夾裡 用右鍵執行
02/09 18:43, 12F

02/09 18:53, , 13F
更正:將做好的.workflow丟到使用者/資源庫Workflows/App-
02/09 18:53, 13F

02/09 18:54, , 14F
lications/Finder裡頭就行囉!
02/09 18:54, 14F

02/09 19:14, , 15F
像這樣http://kuso.cc/4kFV 覺得還挺方便 原始檔也會保留
02/09 19:14, 15F

02/09 19:19, , 16F
其實這兩者可以混用, 我再補充一下XD
02/09 19:19, 16F

02/09 21:56, , 17F
超實用的
02/09 21:56, 17F

02/09 22:06, , 18F
02/09 22:06, 18F

02/09 23:29, , 19F
圖文並茂 好文!好文!辛苦了~
02/09 23:29, 19F

02/09 23:34, , 20F
push!!!
02/09 23:34, 20F

02/10 00:30, , 21F
02/10 00:30, 21F

02/11 16:51, , 22F
之前用過 這真的很好用 Apple說自己OSX先進不是沒道理的
02/11 16:51, 22F
文章代碼(AID): #19Z-M6ri (MAC)
文章代碼(AID): #19Z-M6ri (MAC)