![使用批处理文件删除文件夹中除一个扩展名(例如 .idf)之外的所有文件](https://linux22.com/image/1449522/%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E9%99%A4%E4%B8%80%E4%B8%AA%E6%89%A9%E5%B1%95%E5%90%8D%EF%BC%88%E4%BE%8B%E5%A6%82%20.idf%EF%BC%89%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.png)
我当前删除文件夹中超过 2 天的所有文件的代码是:
forfiles /p "C:\Test" /s /m *.* /c "cmd /c Del /F /Q @path" /d 2
有一个.idf文件和所有其他文件。我想删除除一个 .idf 文件之外的所有文件。我该如何更改才能让当前代码忽略该文件?如果不可能,任何新命令都会有所帮助。
答案1
稍微改进一下你的方法:
- 继续
forfiles
使用/d -2
开关仅处理较旧的文件 - 使用
for %G
with来省略扩展名的if /I [%~xG] neq [.idf]
文件.idf
%
如果从批处理文件运行,则全部加倍:%%G
而不是%G
等。@echo
调试完成后立即删除。
命令:
forfiles /p "C:\Test" /s /m *.* /c "cmd /c for %G in (@path) do @if /I [%~xG] neq [.idf] @echo del /F /Q %G" /d -2
资源(必读):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (其他细节)Windows CMD Shell 命令行语法
- (
%~G
等专题页面)命令行参数(参数)