批处理文件中删除特定扩展名的文件

Fou*_*Two 5 cmd batch-file short-filenames

我想递归删除批处理文件中具有特定扩展名的所有文件。

我知道以下命令:

del /s *.ext
Run Code Online (Sandbox Code Playgroud)

但是,这在 Windows 上也会删除具有其他扩展名的文件,例如 .ext1 或 .ext2 。其原因似乎是此类文件的 8.3 文件名以 .ext 结尾,因此扩展名较长的文件也会匹配。

我正在寻找上述命令的替代方法,该命令递归删除所有具有 .ext 扩展名的文件,但保留具有更长扩展名的文件。

Ste*_*han 2

where命令工作方式有点不同(关于通配符和短名称)。绕一圈for /f,就完成了。然后您的示例将转换为:

for /f "delims=" %%a in ('where /r . *.ext') do ECHO del "%%a"
Run Code Online (Sandbox Code Playgroud)

注意:我del只是通过回显该命令来解除该命令。ECHO当您确定它完全符合您的要求时,请在故障排除后删除它。