0

是否存在允许我批量处理隐藏文件并执行以下操作的程序:

a) 在我的驱动器上搜索 MP3
b) 从 128 kbs/sec 转码到 64 kbs/sec
c) 从 Stereo 切换到 Mono
d) 保存并覆盖以前的文件

还是他们无论如何我都可以编写一个脚本来在 Windows 桌面上执行此任务?

4

1 回答 1

0

如果您在 un*x 上,批处理的首选工具是find

find /path/to/foo -name "*.mp3"

将为您提供 /path/to/foo 及其所有子目录中与“*.mp3”匹配的所有文件。

因为find是野兽,你可能想查看它的联机帮助页。

您可以将脚本传递给find每次匹配时调用的脚本。例如,以下将对所有文件执行“ls -l” (不包括名为“mysounds.mp3/”的目录;这就是它的-type f用途):

find /path/to/foo -type f -name "*.mp3" -exec ls -l \{\} \;

请注意,花括号和分号用反引号转义,以防止 shell 解释这些特殊字符。

如果您有一个convertmp3.sh执行就地转换(覆盖旧文件)的脚本(命名并位于当前工作目录中),您可以执行以下操作:

find /path/to/foo -type f -name "*.mp3" -exec ./convertmp3.sh \{\} \;

这样的脚本可能如下所示:

#!/bin/sh
INFILE="$1"
TMPFILE="${INFILE}.mp3"
ffmpeg -i "${INFILE}" -ac 1 -b 64k "${TMPFILE}" && mv "${TMPFILE}" "${INFILE}"

请注意,我在这里使用了一个临时文件,因为 elseffmpeg会在源文件完全读取之前开始覆盖它,从而因错误而停止。也不要忘记文件名周围的引号,以防止文件名带有空格等。

另请注意,此脚本不会检查输入文件是否已采用所需格式,因此可能会对其进行重新编码。

于 2013-06-17T15:55:40.010 回答