作者uranusjr (←这人是超级笨蛋)
看板MAC
标题Mac scripting: 浅谈档案夹动作
时间Mon Feb 9 16:12:52 2009
前阵子本来想写, 可是写一写把草稿弄丢了 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)
1F:推 ducksteven:Cool!! 原来资料夹动作是这样用的 感谢 02/09 16:18
2F:推 ksk0516:推!有空来学个几招~ 02/09 16:28
3F:推 saxdebreeze:推推推 02/09 16:31
4F:推 aaaaa0703:学到新东西了! 推! 02/09 17:07
5F:推 jianginck:大推阿~真是长知识呢... 02/09 17:08
6F:推 mmmmmfff:高手 02/09 17:09
7F:推 dpoqb:我没有要催稿的意思XD 我是迫不及待想学更多东西 02/09 17:56
8F:→ uranusjr:我没有说是谁, 不要对号入座喔! 02/09 18:20
9F:推 quadra:俨然凶手就在其中一人....XD 02/09 18:24
10F:推 leo80042:所以应该要感谢原po和dpoqb大罗?XD 02/09 18:31
11F:推 Brudamn:原来是这样呀 刚好不解档案夹动作的使用,push! 02/09 18:40
12F:→ Brudamn:我是用机器人制作动作丢到Automator资料夹里 用右键执行 02/09 18:43
13F:推 Brudamn:更正:将做好的.workflow丢到使用者/资源库Workflows/App- 02/09 18:53
14F:→ Brudamn:lications/Finder里头就行罗! 02/09 18:54
16F:→ uranusjr:其实这两者可以混用, 我再补充一下XD 02/09 19:19
17F:推 cityeffect:超实用的 02/09 21:56
19F:推 Brudamn:图文并茂 好文!好文!辛苦了~ 02/09 23:29
20F:推 bag:push!!! 02/09 23:34
21F:推 CitizenDildo:推 02/10 00:30
22F:推 mangoleo:之前用过 这真的很好用 Apple说自己OSX先进不是没道理的 02/11 16:51