首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在将文件排序为文件夹的Apple脚本上显示进度?

如何在将文件排序为文件夹的Apple脚本上显示进度?
EN

Stack Overflow用户
提问于 2018-09-02 16:06:16
回答 1查看 591关注 0票数 0

我还在学习这里的规则,所以请告诉我这个问题是否不合适。

背景

我是平面设计师。我已经创建了一个苹果脚本,它可以将徽标文件排序到文件夹中,以生成徽标包。这个过程可能需要一两分钟,所以我希望能够在运行这个Apple脚本时显示一个进度条。

我对脚本非常陌生,但我设法把一些东西拼凑在一起,从而实现了对标识进行排序的主要目标。

这些步骤是:

  1. 选择带有文件的文件夹
  2. 根据文件名将文件排序到相应的文件夹中。
  3. 删除所有空文件夹。

问题

在这个Apple脚本中,我无法获得一个进度显示。

研究

我在这里读过苹果关于显示进度的文档:https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayProgress.html

这是他们提供的代码:

代码语言:javascript
复制
set theImages to choose file with prompt "Please select some images to process:" of type {"public.image"} with multiple selections allowed

set theImages to choose file with prompt "Please select some images to process:" of type {"public.image"} with multiple selections allowed

-- Update the initial progress information
set theImageCount to length of theImages
set progress total steps to theImageCount
set progress completed steps to 0
set progress description to "Processing Images..."
set progress additional description to "Preparing to process."

repeat with a from 1 to length of theImages

    -- Update the progress detail
    set progress additional description to "Processing image " & a & " of " & theImageCount

    -- Process the image

    -- Increment the progress
    set progress completed steps to a

    -- Pause for demonstration purposes, so progress can be seen
    delay 1
end repeat

-- Reset the progress information
set progress total steps to 0
set progress completed steps to 0
set progress description to ""
set progress additional description to ""

我尝试过实现它,但是我得到了一个错误。

错误

脚本错误

Finder得到了一个错误:无法将进度总步骤设置为53。

我的苹果脚本

在尝试添加显示进度之前,我将发布代码。

代码语言:javascript
复制
tell application "Finder"

    -- Gets the logo package folder from a prompt
    set packageFolder to (choose folder with prompt "Please choose your logo package folder") as string



    -- REVERSE JPG CLEANUP
    delete (every file of folder packageFolder whose name contains "reverse-rgb-300.jpg")
    delete (every file of folder packageFolder whose name contains "reverse-rgb-900.jpg")



    -- Moves files from the logo package folder into their appropriate configuration subfolders
    move (every file of folder packageFolder whose name contains "logo-") to folder (packageFolder & "Logo")
    move (every file of folder packageFolder whose name contains "logotype-") to folder (packageFolder & "Logotype")
    move (every file of folder packageFolder whose name contains "logoMark-") to folder (packageFolder & "Logo Mark")



    -- LOGO FOLDER
    -- Sort logo folder files into their appropriate color scheme folders
    move (every file of folder (packageFolder & "Logo") whose name contains "fullColor") to folder (packageFolder & "Logo:01 Full Color")
    move (every file of folder (packageFolder & "Logo") whose name contains "oneColor") to folder (packageFolder & "Logo:02 One Color")
    move (every file of folder (packageFolder & "Logo") whose name contains "reverse") to folder (packageFolder & "Logo:03 Reverse")

    -- FULL COLOR FOLDER ==========
    -- Moves files from the 01 Full Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo:01 Full Color") whose name contains "cmyk") to folder (packageFolder & "Logo:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logo:01 Full Color") whose name contains "pms") to folder (packageFolder & "Logo:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logo:01 Full Color") whose name contains "rgb") to folder (packageFolder & "Logo:01 Full Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo:01 Full Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo:01 Full Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo:01 Full Color:Digital") whose name contains ".png") to folder (packageFolder & "Logo:01 Full Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo:01 Full Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logo:01 Full Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo:01 Full Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logo:01 Full Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo:01 Full Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logo:01 Full Color:Print:03 Pantone Uncoated")

    -- ONE COLOR FOLDER ==========
    -- Moves files from the 02 One Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo:02 One Color") whose name contains "cmyk") to folder (packageFolder & "Logo:02 One Color:Print")
    move (every file of folder (packageFolder & "Logo:02 One Color") whose name contains "pms") to folder (packageFolder & "Logo:02 One Color:Print")
    move (every file of folder (packageFolder & "Logo:02 One Color") whose name contains "rgb") to folder (packageFolder & "Logo:02 One Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo:02 One Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo:02 One Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo:02 One Color:Digital") whose name contains ".png") to folder (packageFolder & "Logo:02 One Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo:02 One Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logo:02 One Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo:02 One Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logo:02 One Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo:02 One Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logo:02 One Color:Print:03 Pantone Uncoated")

    -- REVERSE FOLDER ==========
    -- Moves files from the 03 Reverse folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo:03 Reverse") whose name contains "cmyk") to folder (packageFolder & "Logo:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logo:03 Reverse") whose name contains "pms") to folder (packageFolder & "Logo:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logo:03 Reverse") whose name contains "rgb") to folder (packageFolder & "Logo:03 Reverse:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo:03 Reverse:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo:03 Reverse:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo:03 Reverse:Digital") whose name contains ".png") to folder (packageFolder & "Logo:03 Reverse:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo:03 Reverse:Print") whose name contains "cmyk") to folder (packageFolder & "Logo:03 Reverse:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo:03 Reverse:Print") whose name contains "pms-c") to folder (packageFolder & "Logo:03 Reverse:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo:03 Reverse:Print") whose name contains "pms-u") to folder (packageFolder & "Logo:03 Reverse:Print:03 Pantone Uncoated")



    -- LOGO MARK FOLDER
    -- Sort logo mark folder files into their appropriate color scheme folders
    move (every file of folder (packageFolder & "Logo Mark") whose name contains "fullColor") to folder (packageFolder & "Logo Mark:01 Full Color")
    move (every file of folder (packageFolder & "Logo Mark") whose name contains "oneColor") to folder (packageFolder & "Logo Mark:02 One Color")
    move (every file of folder (packageFolder & "Logo Mark") whose name contains "reverse") to folder (packageFolder & "Logo Mark:03 Reverse")

    -- FULL COLOR FOLDER ==========
    -- Moves files from the 01 Full Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color") whose name contains "pms") to folder (packageFolder & "Logo Mark:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color") whose name contains "rgb") to folder (packageFolder & "Logo Mark:01 Full Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo Mark:01 Full Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color:Digital") whose name contains ".png") to folder (packageFolder & "Logo Mark:01 Full Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:01 Full Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logo Mark:01 Full Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo Mark:01 Full Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logo Mark:01 Full Color:Print:03 Pantone Uncoated")

    -- ONE COLOR FOLDER ==========
    -- Moves files from the 02 One Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo Mark:02 One Color") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:02 One Color:Print")
    move (every file of folder (packageFolder & "Logo Mark:02 One Color") whose name contains "pms") to folder (packageFolder & "Logo Mark:02 One Color:Print")
    move (every file of folder (packageFolder & "Logo Mark:02 One Color") whose name contains "rgb") to folder (packageFolder & "Logo Mark:02 One Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo Mark:02 One Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo Mark:02 One Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo Mark:02 One Color:Digital") whose name contains ".png") to folder (packageFolder & "Logo Mark:02 One Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo Mark:02 One Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:02 One Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo Mark:02 One Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logo Mark:02 One Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo Mark:02 One Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logo Mark:02 One Color:Print:03 Pantone Uncoated")

    -- REVERSE FOLDER ==========
    -- Moves files from the 03 Reverse folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse") whose name contains "pms") to folder (packageFolder & "Logo Mark:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse") whose name contains "rgb") to folder (packageFolder & "Logo Mark:03 Reverse:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse:Digital") whose name contains ".jpg") to folder (packageFolder & "Logo Mark:03 Reverse:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse:Digital") whose name contains ".png") to folder (packageFolder & "Logo Mark:03 Reverse:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse:Print") whose name contains "cmyk") to folder (packageFolder & "Logo Mark:03 Reverse:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse:Print") whose name contains "pms-c") to folder (packageFolder & "Logo Mark:03 Reverse:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logo Mark:03 Reverse:Print") whose name contains "pms-u") to folder (packageFolder & "Logo Mark:03 Reverse:Print:03 Pantone Uncoated")



    -- LOGOTYPE FOLDER
    -- Sort logotype folder files into their appropriate color scheme folders
    move (every file of folder (packageFolder & "Logotype") whose name contains "fullColor") to folder (packageFolder & "Logotype:01 Full Color")
    move (every file of folder (packageFolder & "Logotype") whose name contains "oneColor") to folder (packageFolder & "Logotype:02 One Color")
    move (every file of folder (packageFolder & "Logotype") whose name contains "reverse") to folder (packageFolder & "Logotype:03 Reverse")

    -- FULL COLOR FOLDER ==========
    -- Moves files from the 01 Full Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logotype:01 Full Color") whose name contains "cmyk") to folder (packageFolder & "Logotype:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logotype:01 Full Color") whose name contains "pms") to folder (packageFolder & "Logotype:01 Full Color:Print")
    move (every file of folder (packageFolder & "Logotype:01 Full Color") whose name contains "rgb") to folder (packageFolder & "Logotype:01 Full Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logotype:01 Full Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logotype:01 Full Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logotype:01 Full Color:Digital") whose name contains ".png") to folder (packageFolder & "Logotype:01 Full Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logotype:01 Full Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logotype:01 Full Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logotype:01 Full Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logotype:01 Full Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logotype:01 Full Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logotype:01 Full Color:Print:03 Pantone Uncoated")

    -- ONE COLOR FOLDER ==========
    -- Moves files from the 02 One Color folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logotype:02 One Color") whose name contains "cmyk") to folder (packageFolder & "Logotype:02 One Color:Print")
    move (every file of folder (packageFolder & "Logotype:02 One Color") whose name contains "pms") to folder (packageFolder & "Logotype:02 One Color:Print")
    move (every file of folder (packageFolder & "Logotype:02 One Color") whose name contains "rgb") to folder (packageFolder & "Logotype:02 One Color:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logotype:02 One Color:Digital") whose name contains ".jpg") to folder (packageFolder & "Logotype:02 One Color:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logotype:02 One Color:Digital") whose name contains ".png") to folder (packageFolder & "Logotype:02 One Color:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logotype:02 One Color:Print") whose name contains "cmyk") to folder (packageFolder & "Logotype:02 One Color:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logotype:02 One Color:Print") whose name contains "pms-c") to folder (packageFolder & "Logotype:02 One Color:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logotype:02 One Color:Print") whose name contains "pms-u") to folder (packageFolder & "Logotype:02 One Color:Print:03 Pantone Uncoated")

    -- REVERSE FOLDER ==========
    -- Moves files from the 03 Reverse folder to their appropriate application folder
    move (every file of folder (packageFolder & "Logotype:03 Reverse") whose name contains "cmyk") to folder (packageFolder & "Logotype:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logotype:03 Reverse") whose name contains "pms") to folder (packageFolder & "Logotype:03 Reverse:Print")
    move (every file of folder (packageFolder & "Logotype:03 Reverse") whose name contains "rgb") to folder (packageFolder & "Logotype:03 Reverse:Digital")

    -- Moves files from the digital application folder to the bitmap folder
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Digital") whose name contains ".jpg") to folder (packageFolder & "Logotype:03 Reverse:Digital:Bitmap")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Digital") whose name contains ".png") to folder (packageFolder & "Logotype:03 Reverse:Digital:Bitmap")

    -- Moves files from the print application folder to their appropriate color gamut folder
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "cmyk") to folder (packageFolder & "Logotype:03 Reverse:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "pms-c") to folder (packageFolder & "Logotype:03 Reverse:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "pms-u") to folder (packageFolder & "Logotype:03 Reverse:Print:03 Pantone Uncoated")

end tell



-- Delete any empty folders
tell application "Finder"
    set posixPath to quoted form of POSIX path of packageFolder
    do shell script "find " & posixPath & " -name '.DS_Store' -type f -delete && find " & posixPath & " -empty -type d -delete"
    display alert "Congratulations! Your logo package is complete."
end tell

我理解这是否要求过高,但我知道,我无法从一段简短的代码片段中推断出一个解决方案,因为我目前在这个领域的技能水平很高。

为了重新声明这个问题,我只是在运行这个脚本时尝试显示一个进度条。

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-02 17:06:25

您有32个move组和一个delete块,因此在脚本开始时初始化进度条。Finder tell块稍后启动

代码语言:javascript
复制
-- Gets the logo package folder from a prompt
set packageFolder to (choose folder with prompt "Please choose your logo package folder") as string

set progress total steps to 33
set progress completed steps to 0
set progress description to "Processing Files..."
set progress additional description to "Preparing to process."

而不是循环,您必须在每个组之后增加completed steps属性,甚至可以显示一条消息。为了方便起见,我建议两位操纵者。将它们放在Finder tell块之外的脚本末尾。

代码语言:javascript
复制
on incrementCompleted()
    set progress completed steps to (get progress completed steps) + 1
end incrementCompleted

on displayProgressMessage(msg)
    set progress additional description to msg
end displayProgressMessage

接下来是移动部分,下面是前两个组,您必须添加其余部分( my前缀至关重要)

代码语言:javascript
复制
tell application "Finder"

    -- REVERSE JPG CLEANUP
    my displayProgressMessage("REVERSE JPG CLEANUP")
    delete (every file of folder packageFolder whose name contains "reverse-rgb-300.jpg")
    delete (every file of folder packageFolder whose name contains "reverse-rgb-900.jpg")
    my incrementCompleted()


    -- Moves files from the logo package folder into their appropriate configuration subfolders
    my displayProgressMessage("Moves files from the logo package folder into their appropriate configuration subfolders")
    move (every file of folder packageFolder whose name contains "logo-") to folder (packageFolder & "Logo")
    move (every file of folder packageFolder whose name contains "logotype-") to folder (packageFolder & "Logotype")
    move (every file of folder packageFolder whose name contains "logoMark-") to folder (packageFolder & "Logo Mark")
    my incrementCompleted()

    ...

最后,重置进度条。

代码语言:javascript
复制
    -- Moves files from the print application folder to their appropriate color gamut folder
    my displayProgressMessage("Moves files from the print application folder to their appropriate color gamut folder")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "cmyk") to folder (packageFolder & "Logotype:03 Reverse:Print:01 CMYK")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "pms-c") to folder (packageFolder & "Logotype:03 Reverse:Print:02 Pantone Coated")
    move (every file of folder (packageFolder & "Logotype:03 Reverse:Print") whose name contains "pms-u") to folder (packageFolder & "Logotype:03 Reverse:Print:03 Pantone Uncoated")
    my incrementCompleted()
end tell

-- Delete any empty folders

displayProgressMessage("Delete any empty folders") -- outside of a tell block `my` is not needed

-- The shell script part is not related to the Finder
set posixPath to quoted form of POSIX path of packageFolder
do shell script "find " & posixPath & " -name '.DS_Store' -type f -delete && find " & posixPath & " -empty -type d -delete"


set progress total steps to 0
set progress completed steps to 0
set progress description to ""
set progress additional description to ""

tell application "Finder" to display alert "Congratulations! Your logo package is complete."
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52138739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档