PowerShell 스크립트 목록에 지정되지 않은 파일을 삭제하는 스크립트
-
18-09-2019 - |
문제
다음과 같은 텍스트 파일에 파일 이름 목록이 있습니다.
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
제휴하지 않습니다 StackOverflow