If statement 我需要有关Powershell if/then语法的帮助

If statement 我需要有关Powershell if/then语法的帮助,if-statement,syntax,powershell-2.0,If Statement,Syntax,Powershell 2.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

我们有一个包含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
,因此我需要在我的条件测试中添加
。我用
这个词失败了…错误的方法调用,
|
作为或的符号…认为我试图通过管道传输某些东西,出于某种原因,我不能包含正则表达式。如果我添加一个重复的
if
语句,并以
bc
作为条件,我可以让它工作,但是必须有一种方法来提供一个选项列表,而不是一系列语句,每个语句都寻找一个值

正确的语法是什么

a、 )提供要测试的条件列表和/或


b、 )在上面的语句中使用正则表达式

Powershell中的or运算符是-或者您可能希望的那样

if($s.contains("BC") -or $s.contains("bc")) { $bcflag = 1 } else {$bcflag = 0}
使用正则表达式:

if($s -match 'bc')
或者只是

if($doc.fullname -match 'bc')
默认
regex
不区分大小写,将匹配“BC”或“BC”