0

メタデータを構築している 3500 のドキュメントのライブラリがあります。ドキュメントの約 1/3 にBCタイトルが含まれており、これらにフラグを付けたいと考えています。現在、これが私が持っているもので、正常に動作します:

$htmPath = "c:\ht"
$srcfiles = Get-ChildItem $htmPath -filter "*.htm*"
ForEach ($doc in $srcfiles)
{
    $s = $doc.Fullname
    if($s.contains("BC")) { $bcflag = 1 } else {$bcflag = 0}
    Write-Host "File: " $doc.Fullname "  BC Flag: " $bcflag
}

bcタイトルに が含まれているドキュメントがある可能性があることに気が付いたのでOR、条件テストに を追加する必要があります。OR...errors out with bad method calls, |as a symbol for or... 何かをパイプしようとしていると思いますが、何らかの理由で正規表現を含めることができません。if条件として重複したステートメントを追加すれば動作させることができますがbc、それぞれが単一の値を探す一連のステートメントではなく、オプションのリストを提供する方法が必要です。

適切な構文は何ですか

a.) テストする条件のリストを提供する、および/または

b.) 上記のステートメントで正規表現を使用する

4

2 に答える 2

1

正規表現を使用:

if($s -match 'bc')

あるいは単に

if($doc.fullname -match 'bc')

デフォルトregexでは大文字と小文字が区別されず、"BC" または "bc" と一致します。

于 2013-02-05T17:17:53.783 に答える
1

Powershell の or 演算子は -or なので、おそらく必要です

if($s.contains("BC") -or $s.contains("bc")) { $bcflag = 1 } else {$bcflag = 0}
于 2013-02-05T17:12:21.837 に答える