我有一个目录:
D:\Movies
D:\Movies\MovieTitle1\backdrops\
D:\Movies\MovieTitle2\backdrops\
D:\Movies\MovieTitle3\backdrops\
D:\Movies\MovieTitle4\backdrops\
如何让批处理文件删除所有名为" Backdrops"?的文件夹我希望它尽可能从D:\驱动器运行递归。
答案 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"