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

时间:2015-06-24 02:58:00

标签: batch-file rmdir delete-directory

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

以下是我需要做的事情:

假设我有一个目录:
C:\ Users \用户名\画

使用子目录

C:\ Users \用户名\画\测试\样品
C:\ Users \用户名\画\ TEST2 \样品

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

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

2 个答案:

答案 0 :(得分:0)

怎么样:

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

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

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

答案 1 :(得分:0)

命令

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中并在do之后执行代码条款。

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