背景介绍
前面文章提到使用一个 workflow 脚本把 pdf 文件按照 booklet 格式重新排列。最后把重排后的页面合并后生成新的文件,这个文件保存在桌面 Desktop 上,默认的命名是 booklet.pdf。遇到的一个问题是,如果我们对多个文件进行转换的话,那么文件命名显然会冲突,Automator 提供的机制是一旦遇到重名文件已经存在,就会对把新文件使用随机名字。
更具体一点来说就是: Automator 提供的 "Copy Finder Items" 有自带的处理名字冲突的机制,那就是遇到文件已存在就对新文件使用随机名字;我们没法改变它的行为,也就是没办法强制它覆盖。
那怎么办? 我们有以下几种方案:
方案一
如果 Desktop 已经存在 booklet.pdf,删除掉它;这样可以保证 "Copy Finder Items" 不会触发文件名冲突导致使用随机名字的问题。
我们在 "Combine PDF Pages" 和 "Copy Finder Items" 之间插入一个 bash 脚本,目的就是删除 Desktop 中的 booklet.pdf 文件(如果有的话)
注意:
所有的 Actions 都是链式传递。上一个 Action 的 Output 传给下一个 Action 作为 Input。
这里插入脚本后,这个传递就断了,虽然脚本并不对上一个 Action 的 output 做任何的处理,但是它需要负责把上一个 Action 的 output 顺递给下一个 Action。否则 "Copy Finder Items" 的 Input 就是空了,后续就要报错了。这里的 echo "$@" 的作用就是帮助传递。
方案二:使用时间戳命名
这种方案不错,时间戳还可以提示文件的生成顺序。
我们在 "Combine PDF Pages" 之后添加一个重命名脚本即可:
方案三:与源文件同名
由于我们把最终生成的文件放在 Desktop 中(或者某个 tmp 目录),假如我们的源文件并不在这个目录中,那我们使用与源文件相同名字并没有问题。
这种方案简单,我们只需要删掉(或禁用)"Rename Finder Items "就可以了。测试证明不行,还是会生成随机名字。
原因在于 "Combine PDF Files" 这个步骤已经丢失了原文件名,只会使用一个随机名。
总结
方案一和方案二都是可以的,两者都能达到目的。具体采用哪种看个人需求。方案三由于不好取得原文件名,所以暂时搁置这个方案,就不细究了。
全文完!
如果你喜欢我的文章,欢迎关注我的微信公众号 deliverit。