如何从目录和子文件夹中删除所有名为 "Sample" 的文件夹?

How to remove all folders named "Sample" from directory and subfolders?

我正在寻找可以添加到我使用的批处理中的命令行。

以下是我需要能够做的事情:

假设我有一个目录:
C:\Users\username\Videos

有一个子目录

C:\Users\username\Videos\测试\样本
C:\Users\username\Videos\test2\样本

我需要使用什么命令来删除两个子目录中的示例文件夹而不是 test/test2 文件夹?

如果您知道使用 RMDIR 的方法,那会很棒,但如果不知道,我愿意接受您的想法。

怎么样:

for /f %i in ('dir /b/s/ad ^| findstr -I "\Sample$"') do rmdir %i

它执行递归目录列表和示例目录过滤器,然后获取列表并删除每个目录。如果你打算把它放在一个批处理文件中,你需要像这样每 % 加倍:

for /f %%i in ('dir /b/s/ad ^| findstr -I "\Sample$"') do rmdir %%i

命令

dir /b /s /ad "C:\Users\username\Videos\sample"

将生成要删除的文件夹列表。现在,为了处理这个列表,我们将命令包装在 for /f 命令中,该命令将对前一个命令

输出中的每一行执行目录删除命令
@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f "delims=" %%a in ('
        dir /b /s /ad "C:\Users\username\Videos\sample"
    ') do rd /s /q "%%a"

或者,从命令行使用它

for /f "delims=" %a in ('dir /b /s /ad "C:\Users\username\Videos\sample"') do rd /s /q "%a"

在这两种情况下,for /f 将遍历 dir 命令的输出行,将该行存储在其可替换参数 %a 中并执行 [= 之后的代码17=] 子句。

for 命令的默认行为是 标记化 输入行使用空格和制表符作为分隔符将它们分开。要禁用此行为 使用 delims= 子句:没有分隔符,只有一个包含整行的标记。