0

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

这是我需要能够做的事情:

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

带有子目录

C:\Users\username\Videos\test\sample
C:\Users\username\Videos\test2\sample

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

如果您知道使用 RMDIR 的方法,那就太好了,但如果不是,我愿意接受想法。

4

2 回答 2

0

关于什么:

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

这会为 Sample 目录执​​行递归目录列表和过滤器,然后获取列表并删除每个目录。如果要将其放入批处理文件中,则需要将每个 % 加倍,如下所示:

for /f %%i in ('dir /b/s/ad ^| findstr -I "\Sample$"') do rmdir %%i
于 2015-06-24T03:30:49.197 回答
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=子句,请使用:没有分隔符,只有一个标记包含整行。

于 2015-06-24T05:54:49.130 回答