从子文件夹到批处理文件删除所有内容

时间:2016-08-24 11:13:08

标签: batch-file cmd

我有以下目录:

c:\Project\Current\stage1\somefiles and some folders
c:\Project\Current\stage2\somefiles and some folders
c:\Project\Current\stage3\somefiles and some folders
c:\Project\Current\stage4\somefiles and some folders
c:\Project\Current\stage5\somefiles and some folders
.
.
.
c:\Project\Current\stage500\somefiles and some folders

我想创建一个批处理文件,以便stage1stage2,...,stage500中的所有内容都会被删除但不会删除任何其他文件夹,以便我仍然可以看到上面的目录但是空的。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

@echo off
CD c:\Project\Current /d
for /f "tokens=*" %%f in ('dir /a-d /s /b') do (
    del "%%f" /q /f
)

有三个重要部分:

for /f "tokens=*" %%f 表示我们正在迭代以下命令生成的所有行,并为每次迭代临时保存变量%%f中的每一行。

dir /a-d /s /b 是代码的核心。这将列出c:\Project\Current\内的所有文件,包括所有子文件夹。 /a-d表示目录将被忽略,因为我们不希望它们被删除。 /s表示我们正在搜索任何子文件夹。 /b将输出格式设置为简单模式,以便输出的每一行只包含文件的完整路径。

del "%%f" /q /f 只是删除%%f中存储的文件。 /q表示不会问我是否确定,只需将其删除即可。\ n"而/f表示任何文件 - 即使它被标记为系统文件或不可见或受保护 - 都将被删除。不要错过%%f周围的引号,否则包含空格的路径会造成麻烦。

答案 1 :(得分:1)

我找到答案并且很简单

for /d %%X in (c:\Project\Current*) Do (
for /D %%I in ("%%X\*") do rmdir /s/q "%%I"
del /F /q "%%X\*")

感谢大家的帮助..