通过批处理文件删除带有findstr的特定子文件夹

时间:2016-07-28 04:20:58

标签: windows batch-file cmd

我正在尝试编写一个批处理脚本,删除子文件夹(例如:\ temp \ root \ students \ students23435),其名称以其(父)文件夹的名称开头(例如:c:\ temp \ root \学生)。

应删除如下所示的粗体文件夹:

  

C:\ TEMP \根\学生

     

C:\ TEMP \根\学生\ students23435

     

C:\ TEMP \根\学生\ students9875

     

C:\ TEMP \根\学生\ 1234

     

C:\ TEMP \根\教师

     

C:\ TEMP \根\教师\ teachers12345

     

C:\ TEMP \根\教师\ teachers898

@echo off
rem pushd "c:\temp\root\"
for /F "tokens=*" %%I in ('dir /a:d-s-h /b ^| findstr /B /I /C:"students" /C:"teachers"') do ( 
  echo Removing Directory "%%I" 
  rmdir /s /q "%%I" )
rem popd

你能帮我修一下这段代码吗?

非常感谢。

度过美好的一天。

2 个答案:

答案 0 :(得分:0)

for /d %%A in (C:\Symbols\*) Do (
    For /F "Delims=" %%B In ('@Dir /b /ad %%A') Do @Echo RD /s C:\symbols\%%B
    )

是单向的。

答案 1 :(得分:0)

首先循环遍历所有文件夹。然后对于每个文件夹%%p,如果有一个名为%%p\%%p*的文件夹,请删除它以及下面的所有文件和文件夹(否则无法删除该文件夹)。

@echo off

for /f "delims=" %%p in ('dir /b /ad') do (
    for /f "delims=" %%d in ('dir /b /ad "%%p\%%p"* 2^>nul') do echo rmdir /s /q "%%p\%%d"
)

为了进行测试,我使用rmdir屏蔽了echo命令,以便仅打印匹配的文件夹。删除echo以真正删除文件夹。