题主悬赏了80铜    |    已采纳 ctgnauh 的答案

MacOS的「自动操作」如何使之按文件夹逐个运行

微博   微信 2022-11-19 21:22   山东  8个回答 周边硬件
萌新自己摸索,打算搞出的效果是:把「装有图片的文件夹」扔进指定文件夹内,则按图片名称顺序生成一个PDF。



按照上图设置,当我扔进去1个文件夹时,确实能够达成想要的效果;但如果扔进去2个文件夹,它并不会生成2个PDF,而是会把两个文件夹里的所有图片都整合起来,生成1个PDF。

求教有没有办法,让每个文件夹内的图片独立生成不同的PDF?
回答
  • 本条答案已被采纳 ctgnauh
    首先说结论:基于文件夹的自动流程会递归查询文件夹下的全部子文件夹,然后进行统一操作。所以你要的效果做不到。

    但是替代方案都挺简单:

    1、创建一个类型为“快速操作”的自动流程,然后可以在finder中右键任何文件夹手动创建pdf。
    2、撸一个shell脚本
    2022-11-20 14:05 北京
    •    2022-11-20 17:46 山东 回复 heyoutui  @ctgnauh 唔…方案1我是明白的,但我贪心地觉得那不够自动…Shell脚本的话,大佬能否指条明路什么教程比较适合门外汉自行研究一下,或者如果淘宝找人代写一个多少钱算合理呢?
    •    2022-11-20 20:50 北京 回复 层主  @heyoutui 如果要求不高的话,我可以给你写一个
    •    2022-11-20 21:31 山东 回复 heyoutui  @ctgnauh 啊,可以麻烦大佬嘛?太感激了!没有什么要求,仅仅就是扔进去X个文件夹就生成X个PDF就好
    •    2022-11-21 19:03 北京 回复 层主  @heyoutui 我怎么给你呢?
    • --= 展开其他1条评论 =--
  • 用shell脚本会很简单,也可以把shell和「自动操作」结合使用,创建一个新的快速操作,然后在「访达」里选择多个文件夹然后运行这个快速操作。注意macOS 12及以上还需要在「系统偏好设置」里授予「访达」完全磁盘访问权限,不然脚本会没有操作权限,「访达」的路径是/System/Library/CoreServices/Finder.app。
    快速操作的设置方式如截图所示:


    具体负责功能的脚本内容已经尽量考虑到各种异常情况了,还有什么问题再说。需要通过「终端」安装Homebrew(最主要是因为需要通过Homebrew安装ImageMagick来转换PDF),按说明装完了之后再通过终端安装必要的软件包:
    brew install coreutils findutils imagemagick

    脚本的文本如下:
    if [ -x /opt/homebrew/bin/brew ]; then
    eval "$(/opt/homebrew/bin/brew shellenv)"
    elif [ -x /usr/local/bin/brew ]; then
    eval "$(/usr/local/bin/brew shellenv)"
    else
    exit 9
    fi
    for i in "${@}"; do
    [ ! -d "$i" ] && continue
    list="$(find -E "$i" -type f -regex '.+\.(jpg|png|webp)')"
    [ -z "$list" ] && continue
    {
    gxargs -d '\n' gls -1ANv <<< "$list"
    echo "${i}.pdf"
    } | gxargs -d '\n' convert -quality 100
    done
    2022-11-22 07:02修改 美国
    •    2022-11-22 12:46 山东 回复 heyoutui  @nathaniel_wu 感谢大佬!逛P9五六年,大佬的头像很眼熟,一直没有机会交流,此番相助感激不尽!经过尝试顺利运行,格式上貌似会区分大小写,JPG格式的图片无法识别,在list那一行添加了|JPG|PNG,就完美了。不知道会不会有人百度到这篇问答,能造福后来者就好了。
    •    2022-11-22 13:12 美国 回复 层主  @heyoutui 这部分你自己还需要识别什么格式自己加就行了
发表评论,请先 登录
T