2016-07-28 53 views
2

我想寫一個批處理腳本刪除子文件夾(egc:\ temp \ root \ students \ students23435)它有一個名稱的名稱(其父母)文件夾(egc:\ temp \ root \ students)。通過批處理文件刪除與findstr的特定子文件夾

粗體如下所示的文件夾應被刪除:

C:\ TEMP \根\學生

C:\ TEMP \根\學生\ students23435

c:\ temp \ root \ students \ students9875

c:\ temp \ root \ students \ 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

首先遍歷所有文件夾。然後,對於每個文件夾%%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以真正刪除文件夾。

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

是一種方式。

+0

不明白。 什麼是「@Dir」的替代? 如何跳過刪除父文件夾(例如c:\ temp \ root \ teachers,c:\ temp \ root \ students)? – PNouma2121

+0

將'C:\ Symbols'更改爲'c:\ temp \ root'並運行它。 – 2016-07-28 06:09:10

相關問題