이름에 특정 문자열이없는 모든 파일을 삭제하는 방법


3

내가 본 특정 패턴과 일치하지 않는 모든 파일 삭제 - Windows 명령 줄

그러나, 나는 파일 이름 내에 특정 문자열을 포함 하지 않는 모든 것을 삭제하는 방법에 대해서는 아무것도 보지 못했다 .

파일 이름에 "MS"(대소 문자가 구분되지 않음)가없는 폴더 및 해당 하위 폴더의 모든 zip (다른 파일은 영향을 미치지 않아야 함) 파일을 삭제하는 방법은 무엇입니까?

이 문자는 다른 문자 옆에있을 수 있습니다 (예 : 파일 이름 "ABCMSABC"는 "MS"가 있기 때문에 보관해야하지만 다른 모든 파일은 삭제해야합니다). 여러 개의 파일에 "MS"가 있습니다.


명령 줄을 사용하여 올바른 방향을 가리 키도록하십시오. "for"명령 (폴더를 재귀 적으로 반복), "dir", "findstr"명령을 정규 표현식과 함께 사용해야 할 수도 있습니다 "MS"가 포함되지 않은 파일을 제거한 다음) 그 결과를 삭제하십시오.
BrianC

@BrianC Regexp가 필요하지 않습니다findstr
DavidPostill

@DavidPostill 사실. 나는 / v 옵션을 잊었다.
BrianC 16:16

@BrianC 절대 신경 쓰지 마라. 너는 옳았다. Regexp는 강력한 솔루션을 필요로합니다.
DavidPostill

답변:


5

이름에 "MS"가없는 폴더 / 하위 폴더에서 zip 파일을 삭제하려면 어떻게해야합니까?

다음 배치 파일을 사용하십시오.

@echo off
setlocal disableDelayedExpansion
for /f "usebackq tokens=*" %%i in (`dir /a:-d /b /s *.zip ^| findstr /v "[\\][^\\]*MS[^\\]*$"` ) do (
  echo del /s /q %%i
)
endlocal

노트:

  • echo배치 파일이 만족 스러울 때 제거하십시오 .
  • 문자열 "MS"가 포함 된 디렉토리를 허용하도록 dbenham 에 의해 주석 별로 업데이트되었습니다.
  • 공백이 포함 된 파일 이름을 처리하도록 업데이트되었습니다.

더 읽을 거리

  • Windows CMD 명령 줄 AZ 색인 - Windows cmd와 관련된 모든 것에 대한 훌륭한 참조입니다.
  • del - 하나 이상의 파일을 삭제합니다.
  • dir - 파일 및 하위 폴더 목록을 표시합니다.
  • findstr - 파일에서 문자열을 검색합니다.
  • for / f - 다른 명령의 결과에 대한 루프 명령.

1
좋은 시작이지만 FINDSTR에 대한보다 정교한 정규식 검색이 필요합니다. 파일의 폴더 경로에 MS가 포함되어 있으면 현재 코드가 MS가없는 zip 파일을 삭제하는 데 실패 할 수 있습니다. 나는 사용할 것이다"[\\][^\\]*MS[^\\]*$"
dbenham

1
@dbenham 좋은 지적. 감사. 정규식 테스트하기 제 대답이 공백이있는 파일 이름을 처리하지 않는다는 것을 깨달았습니다.
DavidPostill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.