2016-07-28 4 views
2

해당 부모 이름으로 시작하는 이름을 가진 하위 폴더 (egc : \ temp \ root \ students \ students23435)를 제거하고 일괄 처리 스크립트를 작성하려고합니다. 폴더 (egc : \ temp \ root \ students). 아래 그림과 같이 굵게배치 파일을 통해 findstr을 사용하여 특정 하위 폴더를 제거하십시오.

폴더는 제거해야합니다

C : \ 임시 \ 루트 \ 학생들

C : \ 임시 \ 루트 \ 학생들 \ students23435

c : \ temp \ root \ students \ students9875

c : \ temp \ root \ students \ 1234

C : \ 임시 \ 루트 \ 교사

C : \ 임시 \ 루트 \ 교사 teachers12345

C \ : \ 임시 \ 루트 \ 교사 \ 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" 
) 

는 테스트를 위해, 나는 일치하는 폴더 만 인쇄됩니다 그래서하는 echo으로 rmdir 명령을 마스크했다. 실제로 폴더를 삭제하려면 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'로 변경하고 실행하십시오. –

관련 문제