如果/然后语法,我需要Powershell的帮助

时间:2013-02-05 17:09:00

标签: if-statement syntax powershell-v2.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这个词错误地用错误的方法调用错误,|作为符号或...认为我正试图管道,并且出于某种原因,我不能包括正则表达式。如果我添加一个带有if的重复bc语句作为条件,我可以使它工作,但必须有一种方法来提供选项列表而不是一系列语句,每个语句都要查找单一价值。

的正确语法是什么?

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

b。)在上述陈述中使用正则表达式

2 个答案:

答案 0 :(得分:1)

Powershell中的or运算符是-or所以你可能想要

if($s.contains("BC") -or $s.contains("bc")) { $bcflag = 1 } else {$bcflag = 0}

答案 1 :(得分:1)

使用正则表达式:

if($s -match 'bc')

或只是

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

默认regex不区分大小写,会匹配“BC”或“bc”。