我需要在一个 .bat 文件中编写一个命令,可以递归删除以特定字符串开头的所有文件夹。如何实现?
我需要在一个 .bat 文件中编写一个命令,可以递归删除以特定字符串开头的所有文件夹。如何实现?
这是你正在寻找的完整答案:
FOR /D /R %%X IN (certain_string*) DO RD /S /Q "%%X"
显然,您需要将certain_string
替换为您的文件夹名称。
这个命令是递归删除,可以删除所有的子文件夹和文件。
for /d %a in (certain_string*) do rd /s %a
这将在命令提示符中起作用。在批处理文件中,您需要像往常一样将%
加倍:
@echo off
for /d %%a in (certain_string*) do rd /s %%a
rd
似乎不能自己扩展通配符。 - Greg Hewgillfor /r
或一些组合。 - Greg Hewgillfor /d %%x in (*.delme) do rd /s /q "%%x"
,但似乎没有效果。 - Marco Demaio我觉得这还没有完成。如果你的意思是“递归地进入目录层次结构以删除所有以某个字符串开头的文件夹”,那么以下内容可能就足够了:
for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x"
这将递归进入目录树,查找所有以“abc”开头的文件夹,遍历该列表并删除每个文件夹。
也许您需要在rd
周围包装一个if exist
,具体取决于找到和返回目录的顺序。通常,在同时迭代和更改某些内容时是不明智的,但有时它可以奏效 :-)
rm -rf -- "目录名称"
例如:rm -rf -- "-2096378"
以上命令将删除以-或通配符字符开头的文件夹/目录。
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S / Q %i
FOR /D /R %%X IN (*.lproj) DO IF /I "%%~xnX" neq "en.lproj" IF /I "%%~xnX" neq "english.lproj" RD /S /Q "%%~fX"
。解释:%%~xnX
等于完整的目录名称。IF /I .. neq "en.lproj"
过滤所有等于"en.lproj"
的目录(/I
= 不区分大小写)。IFs 可以嵌套。最终,我递归删除了所有以.lproj
结尾的目录,除了en.lproj
和english.lproj
。 - Rob W