2016-08-21 1 views
-1

특정 확장자 을 제외하고 폴더 내용을 재귀 적으로 삭제해야 비 사무용 파일로 넘칠 수 있습니다. 특정 확장자를 제외한 모든 항목을 반복적으로 삭제하기위한 일괄 처리

나는이 시도 :

@echo off 
SET ROOTDIR=E:\Testdel\ 
for /f %%F in ('dir %ROOTDIR% /b /a-d ^| findstr /vile ".xls .xlt .xlm .xlsx .xlsm .xltx .xltm .ppt .pot .pps .pptx .pptm .potx .ppam .ppsx .sldx .sldm .pdf .xls .doc .dot .docx. .html .docm .dotb .docb .tiff .jpg .png .cdr .cpt .psd"') do del "%%F" 

를하지만 오류 출력 : 왜

Could Not Find C:\Users\username\New

어떤 생각을?

+2

ROOTDIR을'E : \ Testdel \ '으로 설정하면 오류 메시지가'C : \ Users \ username \ New'를 찾지 못했음을 어떻게 알 수 있습니까? 'New'라는 폴더 나 파일이 실제로 존재합니까? 아니면 그 이름이 한 공간에서 나뉘 었습니까? 나는이 코드가 이름에 공백을 처리하지 않는다고 추측한다. – Phil1970

답변

1

기본 구분 기호가 delim=<tab><space>이므로 파일 이름을 공백으로 구분하기 때문입니다. 또한 파일을 재귀 적으로 삭제하려면 dir/s 플래그를 지정해야합니다. 이 시도 :

@echo off 
set ROOTDIR=E:\Testdel\ 
for /f "delims=" %%F in ('dir %ROOTDIR% /s /b /a-d ^|findstr /vile ".xls .xlt .xlm .xlsx .xlsm .xltx .xltm .ppt .pot .pps .pptx .pptm .potx .ppam .ppsx .sldx .sldm .pdf .xls .doc .dot .docx .html .docm .dotb .docb .tiff .jpg .png .cdr .cpt .psd"') do del "%%F" 

참고 : Wikibooks - Windows Batch Scripting: Switches일반적으로이 스위치는 하나의 슬래시 뒤에 축적 될 수 없음을 언급하고있다. 또한 findstr 명령은 예외 인이고 /v /i /l /e은 바로 가기로 /vile에 결합 될 수 있음을 언급합니다. 즉, 여기의 주문은 중요하지 않으며 /vile = /live = 다른 주문 (이것은 Mofi으로 지적되었습니다). 이것을 지원하는 다른 명령이있을 수 있습니다. 그러나 예외이기 때문에 스위치를 분리하는 것이 모든 경우에 적용되고 혼동을 덜 일으킬 수 있으므로 스위치를 분리하는 것이 좋습니다.

+0

안녕하세요 ..이 솔루션은 일본어 또는 중국어와 같은 비 로마자 문자 파일에서 작동하지 않습니다 .. 내가 100MB보다 큰 다른 크기의 델 크기를 추가하려면 어떻게해야합니까? – denywinarto

관련 문제