2015-02-05 11 views
2

나는 UNC 경로를 포함하는 배치 파일에 대한 디렉토리 c:\bats\를 검색하기 위해 노력하고있어 \\server\public선택 문자열 이스케이프 문자

명령 :

:

Get-ChildItem -path c:\bats\ -recurse | Select-string -pattern "\\server\public" 

나는 문자열 \\server\public 관련 오류가 발생

Select-string : The string \\server\public is not a valid regular 
expression: parsing "\\server\public" - Malformed \p{X} character 
escape. At line:1 char:91 
+ ... ts" -recurse | Select-string -pattern \\server\public 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidArgument: (:) [Select-String], ArgumentException 
+ FullyQualifiedErrorId : InvalidRegex,Microsoft.PowerShell.Commands.SelectStringCommand 

"\server\public" 또는 "'\server\public'"과 같은 다양한 이스케이프를 사용해 보았지만 항상 t 모자 같은 오류.

답변

3

검색 문자열 주위에 작은 따옴표를 사용하고 SimpleMatch를 지정하여보십시오.

Get-ChildItem -path c:\bats\ -recurse | Select-string -pattern '\\server\public' -SimpleMatch 
+0

감사합니다. 매력적이었습니다. – rob

+0

패턴이 변수에 있다면? –

3

솔루션이 @ campbell.rw의 대답에 있기 때문에 문제에 대해 더 자세히 설명하십시오. Select-String 매개 변수 -Pattern은 정규 표현식을 지원합니다. 백 슬래시는 제어 문자이므로 이스케이프해야합니다. PowerShell에서 벗어나 정규식 엔진 자체에서 벗어나야 할 필요는 없습니다. 이스케이프 문자는 백 슬래시입니다.

Select-string -pattern '\\\\server\\public' 

정적 클래스를 사용하여 작업을 수행 할 수 있습니다.

Select-string -pattern ([regex]::Escape('\\server\public')) 

다시 귀하의 경우 -SimpleMatch을 사용하는 것이 더 나은 해결책입니다.

+0

설명해 주셔서 감사합니다. – rob