Sox-使用Shell脚本的Automator Folder Action批量标准化音频文件

时间:2018-12-18 01:27:07

标签: shell automator sox

我正在尝试创建一个Automator Folder Action,以对放置在“文件夹A”中的所有音频文件进行规范化(至-3dB)并将其移至“文件夹B”。

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

第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中的代码输入到Run Shell脚本中。我收到以下错误“找不到sox命令”。我假设这表明sox的安装位置存在问题(我使用HomeBrew做到了)。在Finder中进行搜索会在此处显示sox文件夹:

/usr/local/Cellar/sox

我尝试了各种命令来设置sox应用程序的路径。什么都没用。

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

Screenshot

1 个答案:

答案 0 :(得分:0)

将'Shell'保留为'/ bin / bash',但将'Pass Input'设置为'as arguments',然后粘贴

source ~/.profile

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

然后一切正常,假设您的台式机上有一个“文件夹B”,而sox在您的$PATH上。如果后者不成立,请按照您的建议使用完整的路径进行抽烟,或将/usr/local/Cellar放在$PATH上。
.profile中有我的环境设置资料,所以我只提供了它。