【问题标题】:Recursively delete all folders starting with递归删除所有以
【发布时间】:2010-12-20 21:57:55
【问题描述】:

我需要在 .bat 文件中编写一个命令,以递归方式删除以某个字符串开头的所有文件夹。我怎样才能做到这一点?

【问题讨论】:

    标签: windows batch-file recursion command-line directory


    【解决方案1】:

    这是您正在寻找的完整答案:

    FOR /D /R %%X IN (certain_string*) DO RD /S /Q "%%X"
    

    显然您需要将certain_string 替换为文件夹开头的字符串。

    这会按照您的要求删除 RECURSIVELY(我的意思是它会遍历所有文件夹和子文件夹)。

    【讨论】:

    • @Maorco 的回答对我有用。可悲的是,除了我的以外,他没有得到任何选票。 :(
    • 谢谢。我不得不排除两个目录,这导致了这个命令: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 = 不区分大小写)。如果can be nested。最后,我递归删除了所有以.lproj结尾的目录,除了en.lproj和english.lproj。
    【解决方案2】:

    怎么样:

    for /d %a in (certain_string*) do rd /s %a
    

    这将在命令提示符下工作。在批处理文件中,您必须像往常一样将%s 加倍:

    @echo off
    for /d %%a in (certain_string*) do rd /s %%a
    

    【讨论】:

    • 哎哟。我需要更多的睡眠……或者喝茶……(头撞到桌子上)
    • 嗯,虽然这可能不会递归到目录树并找到符合条件的更深的文件夹,对吧? (我的解决方案也没有这样做,但我刚刚意识到这就是 OP 的意思)。
    • 我不得不从我最初的简单尝试中稍微扩展一下,因为rd 本身似乎不会扩展通配符。
    • 要递归查找以前缀开头的目录,您可以使用for /r 或其组合。
    • 哦,不好。我也没有尝试过,因为我目前没有目录可以破坏:-)
    【解决方案3】:

    未完成,我想。如果您的意思是“递归地沿目录层次结构删除以某个字符串开头的所有文件夹”,那么以下内容可能就足够了:

    for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x"
    

    这将递归到目录树中,查找以“abc”开头的所有文件夹,遍历该列表并删除每个文件夹。

    也许您需要在rd 周围加上if exist,具体取决于找到和返回目录的顺序。一般来说,迭代某些东西并同时更改它很少是一个好主意,但有时它会起作用:-)

    【讨论】:

    • Rössel:这行得通吗?尝试删除以“.delme”结尾的目录时它不起作用,我尝试了这样的建议: for /f "delims=" %%x in ('dir /b /ad *.delme') do rd / s /q "%%x" 但它似乎不起作用。
    • @Marco:不用喊。如果有疑问,请提出一个新问题,并清楚详细地说明您的问题。诸如“不起作用”之类的内容通常是一个糟糕的问题报告。
    • Rossel:没喊,我只是写了大写。那我再问新问题。
    【解决方案4】:

    rm -rf -- "目录名"

    例如:rm -rf -- "-2096378"

    以上命令将删除以 - 或通配符开头的文件夹/目录

    【讨论】:

      【解决方案5】:
      FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S / Q %i
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 2017-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-16
        相关资源
        最近更新 更多