특정 파일 확장자를 가진 모든 파일을 삭제하는 Powershell

특정 파일 확장자를 가진 모든 파일을 삭제하는 Powershell

디렉토리(하위 항목 없음)를 스캔하고 확장자가 다음과 같은 파일을 삭제하고 싶습니다. .avi 이 구문을 시도했지만 오류가 발생하지 않고 파일도 삭제되지 않습니다. 이것은 내가 시도한 코드입니다

get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}

.avi폴더에서 모든 파일을 삭제하려면 무엇을 변경해야 합니까 ?

답변1

del *.<extension>또는 그 별칭 중 하나를 사용하십시오 (예 rm: bash에 더 익숙하다면).

따라서 현재 작업 디렉토리에서 del *.avi끝나는 모든 파일을 삭제 하는 것입니다 ..avi

del <directory>\*.<extension>다른 디렉터리의 파일을 삭제하는 데 사용됩니다 .


경고:del *.<extension>및 모두 del <directory>\*.<extension>패턴과 일치하는 다른 확장자를 삭제합니다. 이러한 파일은 휴지통으로 보내지지 않습니다.

예: del *.doc*삭제 *.문서, *.docm그리고 *.docx. del <directory>\*.<extension>비슷한 방식으로 작업됩니다 .

답변2

디렉터리에서 Powershell 인스턴스를 여는 기본 방법을 가정하면 일반 버전은 다음과 같습니다.

Get-ChildItem *.avi | foreach { Remove-Item -Path $_.FullName }

디렉터리별 버전의 경우:

Get-ChildItem -Path 'C:\Users\ramrod\Desktop\Firefly\' *.avi | foreach { Remove-Item -Path $_.FullName }

-Recurse포함된 모든 폴더에 영향을 주려면 에 추가하세요 Get-ChildItem.

예:

Get-ChildItem *.avi -Recurse | foreach { Remove-Item -Path $_.FullName }

답변3

그만큼제거 항목cmdlet만 있으면 됩니다. avi 파일이 있는 루트 폴더를 전달하고 -Recurse필터와 함께 매개변수를 전달하면 됩니다.

Remove-Item 'C:\Users\ramrod\Desktop\Firefly\*' -Recurse -Include *.avi

이는 각 파일 을 통해 파일을 찾고 Get-ChildItem호출하는 것 보다 더 빠르게 실행되어야 합니다.Remove-Item

  • 스위치를 추가하면 -WhatIf삭제될 항목이 나열되지만 실제 삭제는 수행되지 않습니다.
  • 스위치 를 추가하면 -Confirm각 파일을 삭제하기 전에 메시지가 표시됩니다. 이는 익숙하지 않은 사람들에게 더 안전합니다.파워셸.

답변4

이것은 마침내 나를 위해 해냈습니다. 위의 모든 것을 시도하고 nada를 시도했습니다.

get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force

물론 두 개의 힘이 필요하지는 않지만 그것이 작동하는 것이므로 이것이 내가 고수하는 것입니다.

관련 정보