我还在学习这里的规则,所以请告诉我这个问题是否不合适。
背景
我是平面设计师。我已经创建了一个苹果脚本,它可以将徽标文件排序到文件夹中,以生成徽标包。这个过程可能需要一两分钟,所以我希望能够在运行这个Apple脚本时显示一个进度条。
我对脚本非常陌生,但我设法把一些东西拼凑在一起,从而实现了对标识进行排序的主要目标。
这些步骤是:
问题
在这个Apple脚本中,我无法获得一个进度显示。
研究
我在这里读过苹果关于显示进度的文档:https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayProgress.html
这是他们提供的代码:
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我理解这是否要求过高,但我知道,我无法从一段简短的代码片段中推断出一个解决方案,因为我目前在这个领域的技能水平很高。
为了重新声明这个问题,我只是在运行这个脚本时尝试显示一个进度条。
谢谢大家!
发布于 2018-09-02 17:06:25
您有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前缀至关重要)
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()
...最后,重置进度条。
-- 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."https://stackoverflow.com/questions/52138739
复制相似问题