특정 파일 확장자를 가진 모든 파일을 삭제하는 Powershell 파일이 삭제되지 않습니다.

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

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

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



답변

del *.<extension>또는 별명 중 하나를 사용하십시오 (예 rm: bash에 더 익숙한 경우).

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

del <directory>\*.<extension>다른 디렉토리에서 파일을 삭제하는 데 사용 합니다.


답변

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

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

디렉토리 특정 버전의 경우 :

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

에 추가 -RecurseGet-ChildItem모두 포함 된 폴더에 영향을 미칠 수 있습니다.

예:

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

답변

Remove-Item커맨드는 당신이 필요로하는 모든해야한다. avi 파일이 존재하는 루트 폴더를 전달하고 recurse필터와 함께 플래그를 전달하십시오 .

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

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

-WhatIf스위치를 추가하면 각 파일을 삭제하기 전에 메시지가 표시되므로 PowerShell에 익숙하지 않은 사람들에게 더 안전합니다.


답변

현재 디렉토리에 여러 개의 텍스트 파일이 있다고 가정하십시오.
dir * -include *.txtdir *.txt작업로 예상하지만 dir -include *.txt아무것도 제공하지 않습니다. 그 이유는 스택 오버플로 에 잘 설명되어 있습니다.

수정 된 명령 :
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}


답변

이것은 마침내 나를 위해 해냈습니다-위와 나다를 모두 시도했습니다.

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

확실히 두 힘이 필요하지 않지만 그것이 작동하는 것이므로 내가 고수하고 있습니다.


답변

이 시도

Remove-Item "c:\temp\*.txt"