2014-03-02 2 views
4

주어진 폴더의 전체 경로를 반환하는 방법을 찾으려고합니다. 문제는 비슷한 이름의 폴더가 있으면 내 코드가 둘 이상의 폴더를 반환한다는 것입니다. 예 : "프로그램 파일"을 검색하면 "프로그램 파일"과 "프로그램 파일 (x86)"이 반환됩니다.PowerShell : 정확한 폴더 이름 찾기

$folderName = "Program Files" 
(gci C:\ -Recurse | ?{$_.Name -match [regex]::Escape($folderName)}).FullName 

내가 -eq와 -match 교체 생각하지만 것이다. 내가 "프로그램 파일 (86)을 요청하지 않았다, 나는 내가 사용하고 그것을 반환하지 않습니다

모든 일치를 반환 한 다음 올바른 경로를 선택하도록 사용자에게 요청하거나 패스를 아래로 분할하고 각각에 대해 -eq를 수행하는 배열을 만드는 방법을 생각해 보았습니다. 폴더 이름을 입력 한 다음 경로에 다시 가입해야하지만 필자의 기술은 배열 부서에서 부족하여 제대로 작동하지 않습니다.

어떤 도움이나 조언도 기꺼이 받아 들여질 것입니다. 여기에 내가 프로 데에 감사와 함께 사용하고 무엇

감사

:

$path = gci -Path "$drive\" -Filter $PartialPath -Recurse -ErrorAction SilentlyContinue #| ?{$_.PSPath -match [regex]::Escape($PartialPath)} 

($path.FullName | gci -Filter $filename -Recurse -ErrorAction SilentlyContinue).FullName 

답변

7

-match*Program Files*를 묻는 것과 같다. 이런 경우에는 -Filter 매개 변수 Get-ChildItem을 사용해야합니다. 그것은 훨씬 빠릅니다 등

PowerShell을 3 탈출 정규식 필요로하지 않습니다

$folderName = "Program Files" 
(gci -path C:\ -filter $foldername -Recurse).FullName 

PowerShell을 2 : 필요하지 않은 경우에도

$folderName = "Program Files" 
gci -path C:\ -filter $foldername -Recurse | Select-Object -Expand FullName 

, 당신은 -Recurse를 사용하지 말아야을 그것은 (이 예제 에서처럼).

+0

감사합니다. Frode. 또한 특정 파일의 FullName을 반환해야하므로 GCI의 게시 된 사용이 필요합니다. 당신의 도움으로 나는 이렇게 할 수 있습니다 : 단순화 될 수 있습니까? – woter324

+0

$ path = gci -Path "$ drive \"-Filter $ PartialPath -Recurse -ErrorAction SilentlyContinue ($ path.FullName | gci -Filter $ filename -Recurse -ErrorAction SilentlyContinue). 전체 이름입니다. – woter324