Applescript 如何显示将文件排序到文件夹中的Apple脚本的进度?

Applescript 如何显示将文件排序到文件夹中的Apple脚本的进度?,applescript,progress-bar,Applescript,Progress Bar,我还在学习这里的规则,所以请告诉我这个问题是否合适 背景 我是一名平面设计师。我已经创建了一个苹果脚本,将徽标文件排序到文件夹中,以制作一个徽标包。这个过程可能需要一两分钟,所以我希望能够在运行这个Apple脚本时显示一个进度条 我是一个全新的脚本编写者,但我已经设法拼凑出了一些东西,实现了对徽标进行排序的主要目标 这些步骤是: 选择包含文件的文件夹 根据文件名将文件排序到相应的文件夹中 删除所有空文件夹 问题 我无法在此Apple脚本中使用进度显示 研究 我已经阅读了苹果关于在此处显示进度的文

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

背景

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

我是一个全新的脚本编写者,但我已经设法拼凑出了一些东西,实现了对徽标进行排序的主要目标

这些步骤是:

  • 选择包含文件的文件夹

  • 根据文件名将文件排序到相应的文件夹中

  • 删除所有空文件夹

  • 问题

    我无法在此Apple脚本中使用进度显示

    研究

    我已经阅读了苹果关于在此处显示进度的文档:

    这是他们提供的代码:

    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

    我的苹果脚本

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

    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
    
    我理解这是否要求太多,但我知道,以我目前在这方面的技能水平,我无法从一段简短的代码中推断出解决方案

    为了重申这个问题,我只是试图在脚本运行时显示一个进度条


    谢谢大家!

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

    -- 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块之外

    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
    非常重要)

    最后重置进度条

        -- 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."
    

    谢谢瓦迪安。我已尝试实施您上面概述的解决方案,但没有看到任何进展。我对剧本结尾的内容有点困惑。您说过要将两个处理程序都放在脚本的末尾,并重置进度条。我已经将处理程序作为脚本中的最后一件事,以及在结束查找程序通知之后,但在进度条重置之前。我甚至把它放在脚本开头设置进度之前和之后。这些尝试均未导致显示进度条。
        -- 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."