批处理 删除目录下的所有文件

批处理删除目录下的所有文件

遍历当前目录树下的所有文件

1
for /r . %i in (*.md) do echo %i

对上述代码,修改一下就可删除掉这些文件,如下所示。

删除当前目录树下的所有markdown文件

1
for /r . %i in (*.md) do del "%i"

但这样不好的地方就是目录没有删除掉,会留下大量的空目录。

遍历某个目录下的所有目录

1
for /d %i in (E:\Blog\blog5MD\C语言\*) do @echo %i

运行结果:

1
2
3
4
5
6
7
E:\Blog\blog5MD\C语言>for /d %i in (E:\Blog\blog5MD\C语言\*) do @echo %i
E:\Blog\blog5MD\C语言\Debug
E:\Blog\blog5MD\C语言\代码规范
E:\Blog\blog5MD\C语言\排序
E:\Blog\blog5MD\C语言\文件
E:\Blog\blog5MD\C语言\结构体
E:\Blog\blog5MD\C语言>

这样就好办了,我只要删除掉这些遍历出来的目录树即可。

1
for /d %i in (E:\Blog\blog5MD\C语言\*) do @rmdir /s %i

运行结果:

1
2
3
4
5
6
7
8
E:\Blog\blog5MD\C语言>for /d %i in (E:\Blog\blog5MD\C语言\*) do @rmdir /s %i
E:\Blog\blog5MD\C语言\Debug, 是否确认(Y/N)? y
E:\Blog\blog5MD\C语言\代码规范, 是否确认(Y/N)? y
E:\Blog\blog5MD\C语言\排序, 是否确认(Y/N)? y
E:\Blog\blog5MD\C语言\文件, 是否确认(Y/N)? y
E:\Blog\blog5MD\C语言\结构体, 是否确认(Y/N)? y

E:\Blog\blog5MD\C语言>

可以看到这样是没有问题的,接下来加上/q参数让删除目录树命令rmdir不询问即可。

1
for /d %i in (E:\Blog\blog5MD\C语言\*) do @rmdir /q /s %i

这样就删除掉了E:\Blog\blog5MD\C语言\这个目录下的所有目录树,但是这个目录E:\Blog\blog5MD\C语言\下的文件就不会被删掉,因为我们只遍历目录,然后删除目录,文件还没有操作。删除文件也简单,直接使用del命令即可。

最终代码

删除E:\Blog\blog5MD\C语言目录下的所有markdown文件。

1
2
for /d %%i in (E:\Blog\blog5MD\C语言\*) do @rmdir /q /s %%i
del del E:\Blog\blog5MD\C语言\*.md