我正在尝试编写一个批处理脚本,删除子文件夹(例如:\ 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
你能帮我修一下这段代码吗?
非常感谢。
度过美好的一天。
答案 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
以真正删除文件夹。