用于删除具有特定名称的所有子文件夹的批处理命令

时间:2014-08-28 17:03:19

标签: batch-file window xbmc

我有一个目录:

D:\Movies
D:\Movies\MovieTitle1\backdrops\
D:\Movies\MovieTitle2\backdrops\
D:\Movies\MovieTitle3\backdrops\
D:\Movies\MovieTitle4\backdrops\

如何让批处理文件删除所有名为" Backdrops"?的文件夹我希望它尽可能从D:\驱动器运行递归。

3 个答案:

答案 0 :(得分:51)

简短回答:

FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"

我从Stack Overflow上同一个问题的无数答案之一得到了答案:

Command line tool to delete folder with a specified name recursively in Windows?

此命令未经过测试,但我确实相信此网站足以发布此答案。

正如Alex in a comment所建议的那样,这个批处理脚本应该是万无一失的:

D:
FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"

答案 1 :(得分:4)

以上答案对我而言并不奏效。我必须结合使用@itd解决方案和@Groo评论。对他们表示敬意。

对我来说,最终的解决方案是(使用背景文件夹示例):

FOR /d /r . %%d IN ("backdrops") DO @IF EXIST "%%d" rd /s /q "%%d"

答案 2 :(得分:1)

我将打开一个不同的答案,因为它在评论中太局促了。有人问该怎么办,如果要在另一个文件夹中执行/我想在另一个目录中执行非递归删除操作。

首先,在cmd中使用命令时,必须使用%d,但是在.bat中使用时,必须使用%%d

您可以使用通配符来处理例如以“背景”开头的文件夹:"backdrops*"

递归从.bat所在的文件夹开始删除文件夹:

FOR /d /r . %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

非递归删除.bat所在文件夹中的文件夹(与通配符一起使用,因为您不能同时拥有多个同名文件夹):

FOR /d %d IN ("backdrops*") DO @IF EXIST "%d" rd /s /q "%d"


从您选择的文件夹开始

递归删除文件夹:

FOR /d /r "PATH_TO_FOLDER" %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

非递归删除所选文件夹中的文件夹(与通配符一起使用,因为您不能同时拥有多个同名文件夹):

FOR /d %d IN ("PATH_TO_FOLDER/backdrops*") DO @IF EXIST "%d" rd /s /q "%d"