7

c:\bats\UNCパスを含むバッチファイルのディレクトリを検索しようとしています\\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"orなどのさまざまなエスケープを使用してみまし"'\server\public'"たが、常に同じエラーが発生します。

4

2 に答える 2

7

解決策は@campbell.rwの回答にあるため、問題をさらに詳しく説明します。Select-Stringパラメータ-Patternは正規表現をサポートしています。バックスラッシュは制御文字であり、エスケープする必要があります。PowerShell からエスケープする必要があるのではなく、正規表現エンジン自体からエスケープする必要があります。エスケープ文字もバックスラッシュです

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

正規表現クラスの静的メソッドを使用して、その面倒な作業を行うことができます。

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

繰り返しますが、あなたの場合、を使用-SimpleMatchする方が良い解決策です。

于 2015-02-05T14:56:48.130 に答える
7

検索文字列を一重引用符で囲み、SimpleMatch を指定して、これを試してください。

Get-ChildItem -path c:\bats\ -recurse | Select-string -pattern '\\server\public' -SimpleMatch
于 2015-02-05T14:49:38.473 に答える