删除具有相同名称但扩展名不同的重复文件的脚本

时间:2016-01-07 15:55:30

标签: batch-file delete-file

我正在使用Audacity的Chains脚本功能批量转换和编辑许多大型,未压缩的.WAV文件,同时使用更小的.OGG格式。我最终得到了如下文件夹结构:

f:/sound-recordings:
-- rec1.wav
-- rec2.wav
-- rec3.wav
-- rec4.wav
-- rec5.wav
f:/sound-recordings/cleaned:
-- rec1.ogg
-- rec2.ogg
-- rec3.ogg

某些源.WAV文件已损坏(请注意上例中的rec4.wav和rec5.wav),Audacity不会转换它们(至少通过链接功能)。这会产生问题,因为比较两个文件夹会变得非常繁琐,并且只删除已成功转换为.OGG的.WAV文件。

在上面的示例中,应删除“rec1.wav”,“rec2.wav”和“rec3.wav”,而“rec4.wav”和“rec5.wav”不受影响,因为它们不是转换。

我需要一个脚本(首选批处理或python)来删除主文件夹中的任何.WAV文件,这些文件具有位于“已清理”文件夹中的同名.OGG文件,而其他.WAV文件不会受到影响。

2 个答案:

答案 0 :(得分:3)

@echo off

for %%I in (f:\sound-recordings\*.wav) do (
    if exist f:\sound-recordings\cleaned\%%~nI.ogg del %%I
)

答案 1 :(得分:0)

您可以在clean目录中创建元素列表,使用split去除扩展,然后通过脏目录检查迭代器,检查它是否in清除。

基本的python伪代码看起来像:

clean = [filename.split('.')[0] for filename in clean_directory]
delete = [filename for filename in dirty_directory if filename.split('.')[0] in clean]
for filename in delete:
    os.remove(filename)