Automator将预览/缩略图移动到具有与图像类似的FileName的文件夹(Applescript)

时间:2018-06-03 20:11:56

标签: applescript automator

我得到2个错误。

目标:在我的下载文件夹中,我有:

文件夹:fileName 001 IMAGE:fileName 001 preview.jpg 文件夹:fileName 002 IMAGE:fileName 002 preview.jpg 文件夹:fileName 003 IMAGE:fileName 003 preview.jpg

我希望Automator将所有预览移动到各自的文件夹中。

所以,我跟着这个类似的tutorial,到目前为止我得到了这个:

1st)

on run {input, parameters}
    return input
end run

2nd)Filter Finder项目:Kind是文件夹 3)设置变量值:FilePath(图像必须经过的路径) 4)在这一步中我得到一个错误:检查动作属性(我是新的,所以不知道)。

on run {input, parameters}
    tell application "Finder"
        set FileName to name of file input
    end tell
end run

5th)设置变量值:FilePath(图像必须经过的路径) 6)过滤器查找器项目:种类是图像和名称包含{FilePath}(与文件夹名称相同的路径)。

{FilePath}出现问题,Automator不接受新创建的变量:FilePath,在包含字段中,名为FilePath的新创建的变量。

7)获取变量值:FileName 8)将Finder项目移动到:FilePath

这是workFlow file

1 个答案:

答案 0 :(得分:0)

你的工作流文件的链接不起作用,但它没关系 - 感谢你无论如何都试图分享它,但是,在这个例子中,我可以在没有它的情况下工作,因为我实际上是从头开始做的:

Automator workflow

根据您的工作流程设置接收输入的方式,您可以删除获取指定的Finder项目操作,并允许工作流程作为服务运行,例如,其输入将是包含要处理的图像的文件夹。正如您所说的那样是包含图像的 Downloads 文件夹,我觉得您不太可能将工作流设置为文件夹操作

出于测试目的,您可以保留获取指定的Finder项操作,并使用下载示例文件夹>文件夹。

以下是运行AppleScript 操作中的代码,供您复制/粘贴:

    on run {input, parameters}
        # input will be the folder containing the images, e.g. the Downloads folder
        set [here] to the input

        set suffix to "preview.jpg"
        set my text item delimiters to {pi, space & suffix}


        tell application "Finder"
            set jpgs to the name of every file in here whose name ends with the suffix

            repeat with jpg in jpgs
                set this to the text items of jpg as text
                set there to (a reference to the folder named this in here)

                if not (there exists) then set there ¬
                    to make new folder in here ¬
                    with properties {name:this}

                move the file named jpg in here to there
            end repeat
        end tell
    end run

重要的不是目标文件夹是否存在:如果存在,图像将被移动到适当的文件夹中;如果没有,则在移动图像之前创建文件夹。

更新以回应评论

  

①有时我在“预览”和分机.jpg.png之间有一个字符串

     

②我还想将已完成的文件夹移动到新文件夹/Users/sebba/BLENDER/BLENDS

鉴于您现在公开的文件名的可变性,我认为使用shell脚本而不是AppleScript来处理文件会更容易。

删除运行AppleScript 操作并插入运行Shell脚本操作,并使用以下选项: Shell bin/bash传递输入: as arguments

删除编辑字段中显示的所有示例代码并输入以下代码:

    cd "$1"
    folder=()

    while read -r file
    do 
        folder+=("$(egrep -io '^.+ \d{3}' <<<"$file")")
        [[ -d "${folder[@]: -1}" ]] || mkdir "${folder[@]: -1}"
        mv -v "$file" "${folder[@]: -1}"
    done <<<"$( ls | egrep -i '^.+ \d{3} preview.*\.(jpg|png)' )"

    mv -v "${folder[@]}" "/Users/sebba/BLENDER/BLENDS"

这使用正则表达式匹配来挑选出以下文件名:

  1. 从任何事情开始(但不是没有);然后
  2. 跟着一个空格,正好是三位数,一个空格,然后是“预览”;然后
  3. 绝对遵循任何事情(包括什么都没有);然后
  4. 以“.jpg”或“.png”结尾。
  5. 因此,它会将以下文件移动到给定文件夹(如果该文件夹不存在,则创建该文件夹,并覆盖具有相同名称的文件):

    • My image_file 001 preview.foo bar.jpgMy image_file 001/
    • 004 2 001 preview.png004 2 001/

    但以下文件不会受到影响:

    • 001 preview.png
    • My image_file 01 preview.jpg