문제

다음과 같은 텍스트 파일에 파일 이름 목록이 있습니다.

f1.txt
f2
f3.jpg

PowerShell의 파일을 제외한 폴더에서 다른 모든 것을 삭제하려면 어떻게합니까?

의사 코드 :

  • 라인 별 텍스트 파일을 읽으십시오
  • 파일 이름 목록을 만듭니다
  • 폴더와 하위 폴더를 다시 반복하십시오
  • Filename이 목록에 있지 않은 경우 삭제하십시오.
도움이 되었습니까?

해결책

데이터:

-- begin exclusions.txt --
a.txt
b.txt
c.txt
-- end --

암호:

# read all exclusions into a string array
$exclusions = Get-Content .\exclusions.txt

dir -rec *.* | Where-Object {
   $exclusions -notcontains $_.name } | `
   Remove-Item -WhatIf

제거하십시오 -WhatIf 결과에 만족하면 전환하십시오. -WhatIf 당신에게 그것을 보여줍니다 ~일 것이다 do (즉, 삭제되지 않습니다)

-이신

다른 팁

파일이 현재 폴더에 존재하면 다음을 수행 할 수 있습니다.

Get-ChildItem -exclude (gc exclusions.txt) | Remove-Item -whatif

이 접근법은 각 파일이 별도의 줄에 있다고 가정합니다. 파일이 Subfolders에 존재하면 Oisin의 접근 방식으로 이동합니다.

실제로 이것은 재귀보다는 첫 번째 디렉토리에서만 작동하는 것 같습니다. 변경된 스크립트가 올바르게 되풀이됩니다.

$exclusions = Get-Content .\exclusions.txt

dir -rec | where-object {-not($exclusions -contains [io.path]::GetFileName($_))} | `  
where-object {-not($_ -is [system.IO.directoryInfo])} | remove-item -whatif
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top