您可以从以下开始:
for /R %%x in (*.mp3) do move "%%x" "c:\dir"
*.MP3
,等待搜索完成。选择所有结果并使用剪切。 粘贴到目标目录中。为了完成一个过度的努力,安装任何Unix工具(例如CYGWIN,许多其他工具)并执行“mv //* final_dir”即可 :)
当然,这将使您拥有一个在Windows上非常有用和超级酷的Unix工具集。
另一种过度杀伐的方法是安装ActivePerl并在Perl中执行它:
map { move($_, $final_dir) || die "Can not move $_: $!" } glob("basedir/*/*/*");
fs-dependent,文件数量限制的实验结果是你可以在同一级别下拥有数千个文件,但没有尝试超过10000个,超过1000个是可以的。
编辑 我看到你想用“win batch”来做这件事(在你后来添加的评论中)...我将我的答案保留作为另一种选择...
我使用了JP soft's 4NT(一个command.com替代品)来完成这个任务。
cd <root of mp3 tree>
global /i move *.mpr \newdir
请注意,newdir 绝对不能是 mp3 树根目录的子目录。
global 在起始目录的每个子目录中执行一个命令(移动命令)。/i 告诉它忽略返回代码(一个目录可能不包含任何 mp3 文件)。
4NT 不再销售,但 "Take Command" 也应该可以使用。
artist>move *.mp3 destinationDirectory
我相信会起作用。
首先,这应该移动到superuser。其次,我使用MusicBrainz来管理我的mp3库。
由于问题变得更加复杂,让我详细介绍一下MusicBrainz。
你可以将它指向一个音乐文件夹,深入到任何你想要的层级,并获取该目录中找到的所有歌曲。然后,它会基于用户生成的数据库提供重新标记的选项。它使用一种疯狂的音频指纹识别方法来猜测任何缺少元数据或需要正确元数据的歌曲(比如Aretha Franklin演唱的“Son of Preacher Man”和著名的滚石乐队翻唱的“Brown Eyed Girl”)。
在完成任何元数据校正后,你点击保存,它将:
a)替换/添加元数据标签
b)根据你指定的任何模式将你的mp3文件移动到目录中
c)如果你设置了这个选项,它将删除任何在文件重定位后留下空的文件夹
因此,你可以简单地告诉它不要重新标记,也不要使用任何元数据作为文件夹目标,它就会按照你想要的方式执行(如果你想要更多,它也可以提供)。
我已经设置好了从我的“巨型音乐混乱”文件夹中获取内容,然后根据艺术家、专辑、碟片将它们放入文件夹,并最终给mp3文件重命名为“曲目# - 标题”。类似于Music Library/%Artist%/%Album%/%Vol%/%#% - %title