Batch file 通过批处理文件删除子文件夹中的所有内容

Batch file 通过批处理文件删除子文件夹中的所有内容,batch-file,cmd,Batch File,Cmd,我有如下目录: 我想创建一个批处理文件,以便删除stage1,stage2,…,stage500中的所有内容,但不删除任何其他文件夹,以便我仍然可以看到上面的目录,但目录为空 有人能帮忙吗?试试这个: @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表示我们正在迭代以下命令生成的

我有如下目录:

我想创建一个批处理文件,以便删除
stage1
stage2
,…,
stage500
中的所有内容,但不删除任何其他文件夹,以便我仍然可以看到上面的目录,但目录为空

有人能帮忙吗?

试试这个:

@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
表示“不要问我是否确定,只需将其删除”和
/f
表示任何文件(即使标记为系统文件或不可见或受保护)都将被删除。不要错过
%%f周围的引号,否则包含空格的路径将导致问题。

请尝试以下操作:

@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
表示“不要问我是否确定,只需将其删除”和
/f
表示任何文件(即使标记为系统文件或不可见或受保护)都将被删除。不要错过
%%f周围的引号,否则包含空格的路径将导致麻烦。

我找到了答案,答案非常简单

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

谢谢大家的帮助。

我找到了答案,答案很简单

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

谢谢大家的帮助。

它正在做一些奇怪的事情,我还在它后面添加了pause,命令提示符日志列表中出现了如下内容:C:\WINDOWS\system32>DEL/S/F/Q C:\tmp1目录名C:\Users\ME\AppData\Local\Temp\Temp1\en\u sql\u server\u 2014\u标准版带服务\u包\u x86\u dvd\u 6669994.zip\en\u sql\u server\u 2014\u staStandard_edition_with_service_pack_1_x86_dvd_6669994\1033_ENU_LP\x86\Setup\sql2008s support\pfiles\sqlservr\100\keyfile\1033太长。抱歉,由于我不是专家,它似乎仍然存在一些问题,它没有更改目录(CD),我尝试手动更改它,但在这个批处理文件中,系统不会更改目录,并且会产生与上次相同的结果。很抱歉让你感到痛苦。不,我刚刚用了你建议的方法。@MichealS,非常感谢你的帮助,我找到了解决我问题的方法:for/d%%X in(c:\Project\Current*)Do(for/d%%I in(%%X*)Do rmdir/s/q“%%I”del/F/q“%%X*)它做了一些奇怪的事情,我还在它后面添加了pause,命令提示符日志列表中出现了如下内容:C:\WINDOWS\system32>DEL/S/F/Q C:\tmp1目录名C:\Users\ME\AppData\Local\Temp\Temp1\en\u sql\u server\u 2014\u标准版带服务\u包\u x86\u dvd\u 6669994.zip\en\u sql\u server\u 2014\u staStandard_edition_with_service_pack_1_x86_dvd_6669994\1033_ENU_LP\x86\Setup\sql2008s support\pfiles\sqlservr\100\keyfile\1033太长。抱歉,由于我不是专家,它似乎仍然存在一些问题,它没有更改目录(CD),我尝试手动更改它,但在这个批处理文件中,系统不会更改目录,并且会产生与上次相同的结果。很抱歉让您感到痛苦。不,我刚刚使用了您建议的解决方案。@MichealS,非常感谢您的帮助,我找到了解决我问题的方法:for/d%%X in(c:\Project\Current*)Do(for/d%%I in(%%X*)Do rmdir/s/q“%%I”del/F/q“%%X*)如果您找到了自己的解决方案,请将其作为答案发布,不是作为问题的编辑。@Flexo,完成了。。如果你找到了自己的解决方案,那很好,但请将其作为答案发布,而不是作为问题的编辑。@Flexo,完成了。。