【问题标题】:Sox - Automator Folder Action with Shell Script to batch normalise audio filesSox - 使用 Shell 脚本批量标准化音频文件的 Automator 文件夹操作
【发布时间】:2018-12-18 01:27:07
【问题描述】:

我正在尝试创建一个 Automator 文件夹操作,以规范化(至 -3dB)放置在“文件夹 A”中的任何音频文件并将其移动到“文件夹 B”。

终端中的以下内容达到了预期的结果:

第 1 步。

cd /Users/ray/Desktop/Folder\ A

第 2 步。

for file in *.aif; do sox $file --norm=-3 /Users/ray/Desktop/Folder\ B/$(basename $file) -V; done

基本上,我如何将此过程转换为文件夹操作?

在我尝试过的 Automator 中:

选择“文件夹 A”作为输入并将步骤 2 中的代码输入到运行 Shell 脚本中。我收到以下错误“未找到 sox 命令”。我假设这表明安装 sox 的位置存在问题(我使用 HomeBrew 进行了此操作)。在 Finder 中搜索会在此处显示 sox 文件夹:

/usr/local/Cellar/sox

我尝试了各种命令来设置 sox 应用程序的路径。没有任何效果。

可能还有其他问题。我不确定将“Shell”设置为什么,或将“传递输入”设置为,或者是否保留选择时出现的默认文本,例如“猫”。

Screenshot

【问题讨论】:

    标签: shell automator sox


    【解决方案1】:

    将'Shell'保留为'/bin/bash',但将'Pass Input'设置为'作为参数',然后粘贴

    source ~/.profile
    
    for file in "$@"
    do
      bname="${file##*/}"
      sox --norm=-3 "$file" "/Users/ray/Desktop/Folder B/$bname"
    done
    

    假设您的桌面上有一个“文件夹 B”,并且 sox 在您的 $PATH 上,那么事情应该会奏效。如果后者不成立,请按照您的建议使用 sox 的完整路径,或将 /usr/local/Cellar 放在您的 $PATH 上。
    我在.profile 中有我的环境设置资料,所以我只是获取它。

    【讨论】:

    • 文件夹操作未产生结果,因此我将其作为工作流运行以进行故障排除。我正在使用 Get Specified Items 操作,并将 Folder_A 添加到列表中,然后是 Shell 脚本。我尝试了各种音频文件。对于 "$@" 中的文件,请执行 bname="${f##*/}" /usr/local/Cellar/sox/14.4.2_1/bin/sox --norm=-3 "$file" "/Users/ray /Desktop/Folder_B/$bname" done 结果是错误消息:/usr/local/Cellar/sox/14.4.2_1/bin/sox 失败格式:无法确定文件类型`/Users/ray/Desktop/文件夹_A'
    • 我已经更正了。这是代码:对于 "$@" 中的文件,请执行 bname="${file##*/}" /usr/local/Cellar/sox/14.4.2_1/bin/sox --norm=-3 "$file " "/Users/ray/Desktop/Folder_B/$bname" 完成。仍然出现同样的错误。
    • 您现在是否将其用作文件夹操作?我也遇到了一些小问题,但从未见过那个错误。
    • 该错误似乎表明您以某种方式将文件夹传递给 sox,而不是文件。
    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 2021-03-14
    • 2012-01-16
    • 2021-05-22
    • 2021-02-13
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多