Mac OS 上 Automator 应用程序(.app)的百分比进度 [重复]

Posted

技术标签:

【中文标题】Mac OS 上 Automator 应用程序(.app)的百分比进度 [重复]【英文标题】:Percentage progress on Automator application(.app) on Mac OS [duplicate] 【发布时间】:2019-11-20 00:52:28 【问题描述】:

我使用 Automator Application 来创建应用程序(.app 通过双击运行)。它运行一个一个执行命令的命令。每个命令需要 2-3 分钟。我想要实现的是在完成每个命令后显示百分比进度。

在上图中,百分比始终为零。我想在完成每个命令后明确设置进度。我也知道这可以使用 AppleScript 但我想在 bash 脚本中实现。

【问题讨论】:

如果它只是一个“运行 Shell 脚本”操作并且该 shell 脚本包含多个命令,我认为你做不到。完成百分比是完成的操作的百分比。如果您可以跨多个“运行 Shell 脚本”操作将您的 shell 脚本拆分为多个脚本,那么完成百分比将在它们完成时更新。 @tzs 我只想展示进度。我认为可以使用 Automator 抛出我在苹果文档上找到了 automator 脚本示例,但这也没有显示进度。当然,如果我们有 10 个命令并且其中 4 个已完成,我们应该能够显示 40% 已完成。 【参考方案1】:

我为我的一个脚本做过一次:

progress() 
  set -- "$@" "$((100*$1/$2))" "$(($1 == 0 ? -1 : SECONDS*($2-$1)/$1))"
  printf "%d of %d (%d%%) eta %s sec" "$@"

你传递给它 2 个参数:

    您正在处理的事物的当前编号, 您正在处理的事物总数

您的脚本将如下所示:

#!/bin/bash
progress() 
  set -- "$@" "$((100*$1/$2))" "$(($1 == 0 ? -1 : SECONDS*($2-$1)/$1))"
  printf "%d of %d (%d%%) eta %s sec" "$@"


n=10   # you need to hardcode this, the total number of commands to run
i=0

command_01; progress $((++i)) $n
command_02; progress $((++i)) $n
command_03; progress $((++i)) $n
command_04; progress $((++i)) $n
command_05; progress $((++i)) $n
command_06; progress $((++i)) $n
command_07; progress $((++i)) $n
command_08; progress $((++i)) $n
command_09; progress $((++i)) $n
command_10; progress $((++i)) $n

printf "\nThat took %d sec\n" $SECONDS

【讨论】:

感谢您的回复,但是当我从终端运行 bash 脚本时,这一切正常。但是我已经从 Automator 创建了应用程序(.app),当你双击它时它就会运行。因此,为了了解它的进度,我只能在菜单栏上显示它的百分比,如上图所示。

以上是关于Mac OS 上 Automator 应用程序(.app)的百分比进度 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

mac 使用 automator 创建全局快捷键

mac 添加new file.md

Mac Automator 在 iTunes 中“获取信息”,然后按下一步直到最后一首歌曲

OS X 中快速调出终端

用Xcode和Automator制作workflow

使用 Automator/Applescript 输入数据?