Batch file 用于删除同名但扩展名不同的重复文件的脚本

Batch file 用于删除同名但扩展名不同的重复文件的脚本,batch-file,delete-file,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文件已损坏note rec

我正在使用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文件已损坏note rec4.WAV和rec5.WAV,Audacity至少不会通过chains函数对其进行转换。这就产生了一个问题,因为比较这两个文件夹并仅删除成功转换为.OGG的.WAV文件会变得非常繁琐

在上面的示例中,应该删除rec1.wav、rec2.wav和rec3.wav,而rec4.wav和rec5.wav未被触及,因为它们未被转换


我需要一个脚本批处理程序或python首选程序来删除主文件夹中的任何.WAV文件,这些文件在已清理的文件夹中具有相同名称的.OGG文件,其他.WAV文件保持不变。

您可以在清理目录中创建元素列表,使用split剥离扩展,然后遍历脏目录,检查它是否处于干净状态

基本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)

你试过自己解决这个问题吗?如果是,请向我们展示代码,我们将提供帮助。如果您希望以批处理文件的形式执行此操作,则可以使用简单的FOR命令遍历所有.wav文件,然后使用If EXIST查看是否创建了相应的.ogg文件。
@echo off

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