如何批量将子文件夹目录从 FLAC 转换为 ALAC?

如何批量将子文件夹目录从 FLAC 转换为 ALAC?

现在我正在使用以下命令手动转换终端中的每个文件夹,

for i in *.flac; do echo $i; ffmpeg -i "$i" -y -v 0 -vcodec copy -acodec alac  "${i%.flac}".m4a && rm -f "$i"; done

当然,这只会影响我在终端中访问的单个文件夹,而不会影响任何子文件夹。因此,如果我在 Artist A 上执行,则找不到 flac。我必须在 Album 1 上执行,然后在 Album 2 上执行,等等。我有数千个文件夹需要经历这个过程,但我真的不知道命令中的元素是什么意思,所以我无法解读和扩充它。

我正在考虑采用两种方法来批量处理我的目录和子文件夹。

1 - 对目录和所有子文件夹执行命令。这可能是最简单的方法。一旦我将所有文件迁移过来,我就可以执行命令一次转换数万个文件。

2 - 自动转换添加到目录的任何 .flac 文件。此方法更像是“设置后就忘掉”的方法。如果我向目录/子文件夹添加更多文件,它们将始终被转换。

目录结构:
音乐
. 艺术家 A
.. 专辑 1
... 曲目 1.flac

答案1

find . -type f -name '*.flac' -print -exec sh -c 'i="{}"; ffmpeg -i "$i" -y -v 0 -vcodec copy -acodec alac  "${i%.flac}".m4a && rm -f "$i"' \;

答案2

Forfiles /s可以做你想做的事。它可以检查文件夹中的文件并递归到子文件夹中。

您想要使用的命令将是这样的(请注意,我无法测试它,所以请耐心等待)

forfiles /s /m *.flac "cmd /c echo @path; ffmpeg -i ""@path"" -y -v 0 -vcodec copy -acodec alac  ""${@path.flac}"".m4a && rm -f ""@path"""

相关内容