-Exclude
은 폴더 이름 \ 경로 배제를위한 좋은 실적이없는 그러나 파일 이름에 좋습니다. 이 문제를 해결하려면 Where-Object
절을 사용해야합니다.
$Files = Get-ChildItem -Path "D:\depot\main" -Recurse -Include "*.exe" -Exclude "HWEMNGR.EXE","wmboot.exe","SDClientMobileEdition.exe" |
Select-Object -ExpandProperty FullName |
Where-Object{$_ -notmatch "\\FolderName\\"}
코드 조각 % { $_.FullName }
이 같은 일을 Select-Object -ExpandProperty FullName
로 대체했습니다. 그런 다음 Where-Object
을 사용하여 FolderName이없는 경로를 제외합니다. regex 기반이므로 슬래시를 두 배로 늘립니다. 이것은 또한 우리가 폴더와 "FolderName.exe"
다른 방법 TheMadTechnician처럼
는 다른 방향에서이에 와서 바로 파일을 확인 할 수 지적 호출 할 수없는 파일을 제외 확인하는 데 도움이 당신이 정말로 신경을 쓰고있는 폴더는 두 개뿐입니다. Get-ChildItem
은 경로를위한 배열을 취할 것이므로 이와 비슷한 것을 사용할 수도 있습니다.
$paths = "D:\depot\main\install","D:\depot\main\debug"
$excludes = "HWEMNGR.EXE","wmboot.exe","SDClientMobileEdition.exe"
$Files = Get-ChildItem $paths -Filter "*.exe" -Exclude $excludes | Select-Object -ExpandProperty FullName
는 결과로 원하는 폴더 2 개입니다. 당신은 여전히 당신이 원하지 않는 파일을 제외하고 그냥 전체 파일 경로를 반환합니다.
. 그런 식으로 그는 세 번째 폴더의 내용을 가져 오지 않고 제외시킵니다. 이와 같은 작은 세트의 경우 약간의 추가 작업이 필요할 때가 있습니다. – TheMadTechnician
@TheMadTechnician 귀하의 의견을 바탕으로 제안을 포함 시켰습니다. 내가 이해한다고 가정하면 ..... – Matt
그래, 맞아. 경로에 'D : \ Depot \ Main'을 포함시킬 수 있습니다. – TheMadTechnician