我有一个混合音乐库,里面既有“mp3”文件,也有“m4a”文件。许多音乐目录和特定专辑子目录实际上包含看似重复的音乐歌曲文件,只是 mp3 和 m4a 文件的文件扩展名不同。
对于那些包含具有两个扩展名的相同歌曲的目录,我如何使用 Windows 7 和/或批处理文件命令搜索我的整个音乐目录(及其相应的子目录)并仅删除那些在同一个音乐库文件夹中以 mp3 文件格式存在相同歌曲文件的 m4a 文件?
如果我忽略各个专辑的同一音乐文件夹中可能存在的同一歌曲的重复 m4a 文件,我的音乐库包含大约 75,000 首歌曲。
但是,现在,无论特定的文件扩展名类型如何,我的目录似乎有超过 100,000 首歌曲(其中显然有 25,000 首歌曲是重复的,这解释了上述相同歌曲的文件格式共存于各自的音乐专辑文件夹和/或音乐子目录中)。
我可以使用什么操作或命令来安全地扫描我的音乐库并删除首选“mp3”文件已存在的无关“m4a”歌曲文件?...同时保留那些不存在相同歌曲 mp3 文件的 m4a 文件?我还需要有关如何设置和启动任何可实现上述目标的批处理文件的分步说明。非常感谢大家!
答案1
这是一个脚本(又名“批处理文件”),如果您不想从某处下载程序,它可以为您完成此操作:
@echo 关闭 设置本地启用延迟扩展 对于 (*.m4a) 中的 /r %%F 执行 ( 设置 mp3name=%%~dpnF.mp3 如果存在 !mp3name! ( fc/b %%F !mp3名称! > nul 如果错误级别 1 ( echo 警告:%%F 和 !mp3name! 都存在,但是并不相同。 ) 别的 ( 回显 DEL %%F ) ) )
解释:
for %%letter in (wildcard) do some_command
扫描当前目录以查找与通配符匹配的文件并执行命令将所标识的变量letter
设置为文件名。for /r %%letter in ...
相同但是递归的。(
...)
让您指定一个命令块,而不只是一个。- 如上所示,
%%F
是找到的 M4A 文件的名称。 %%~dpnF
是驱动器号、路径和(基本)名称部分%%F
——即除扩展名之外的所有内容。我们在此添加扩展名;即,除了扩展名外,.mp3
文件名与 相同。将此名称分配给变量。%%F
.mp3
mp3name
- 如果此文件存在,则执行接下来的六行。(请注意,我们再次使用
(
...)
来指定命令块。) fc/b %%F !mp3name! > nul
-fc
是F伊莱Compare.fc
喜欢比较文本文件,所以我们说fc/b
做一个b逐项比较。因此fc/b %%F !mp3name!
比较两个文件。> nul
表示不在屏幕上显示比较结果;我们只希望脚本知道比较的结果。if errorlevel 1
表示仅当紧接的前一个命令“失败”时才执行以下命令。在 的情况下fc
,“失败”表示文件不相同,因此我们让脚本告诉您Hey_Jude.mp3
和Hey_Jude.m4a
都存在但不相同。- 最后,
DEL %%F
表示删除该文件。(echo DEL %%F
表示显示删除命令,但不执行该命令。)
设置:
- 在 Windows 资源管理器中,转到音乐目录的根目录(顶部),新建文本文件并命名。
- 双击它以在记事本中打开(编辑)。复制并粘贴上述脚本。保存并退出。
- 返回 Windows 资源管理器,将文本 (
.txt
) 文件重命名为.bat
扩展名。忽略警告;单击“是”。 - 启动命令提示符。
cd
转到上述目录。输入脚本(批处理)文件的名称(您可以输入扩展名.bat
,但可能不需要)。验证DEL
它报告的命令列表是否合理。如果合理, - 返回 Windows 资源管理器,右键单击文件
.bat
,然后选择编辑。 - 在记事本中,更改
echo DEL
为DEL
。保存并退出。 - 返回命令提示符,再次运行该命令。
答案2
哦,我也有类似的问题!我的音乐收藏非常丰富,包含不同的文件类型 - mp3、m4a、flac。使用常见的重复查找器很难在 mp3 和 flac 中找到同一首歌曲 - 它们只是计算文件哈希并进行比较。当然,不同的文件有不同的哈希,但这是同一首歌!最后,我使用了音频比较器程序。它通过声音比较音频文件。但是,Audio Comparer 并不完美 - 它挂在我收藏的 80,000 首歌曲上,所以我不得不将我的收藏分成两部分才能让它工作。
答案3
我遇到过类似的情况,需要删除.tif当有同名 PDF 可用时,将删除该文件。以下是 5 行批处理文件代码。
rem A simpler solution to traverse sub-folders with a
root folder provided and remove files with the same
name but different extension.
@echo on
for /R <root-folder> %%I in (*.tif) do (
@echo checking
if exist %%~dI%%~pI%%~nI.PDF del %%I
)
pause
将此代码放入批处理文件中并提供根文件夹。批处理过程将查看所有文件和子文件夹并删除所有 tif 文件。
答案4
如果您最终决定手动执行此操作,则有很多免费软件“重复”文件查找器,但在我看来,它们很慢并且难以使用。
- 在搜索字段中输入以下内容:
*.mp3|*.m4a
您可能需要查看将搜索限制在某个位置
结果列表将按字母顺序包含您的所有 mp3 和 m4a 歌曲,因此,只要您看到某首歌曲两次,您就可以安全地突出显示并删除 m4a 文件。
我知道这不是一个自动化的解决方案,但我更喜欢手动操作,所以无论如何,我可以利用额外的时间来清理我的音乐收藏中不需要的歌曲。