使用两个Where命令运行两个检查



我正在使用这个命令

Where {$_.Extension -match "zip||rar"}

但是也需要使用这个命令

Where {$_.FullName -notlike $IgnoreDirectories}

我应该用&&或II,如

Where {$_.Extension -match "zip||rar"} && Where {$_.FullName -notlike $IgnoreDirectories}

Where {$_.Extension -match "zip||rar"} || Where {$_.FullName -notlike $IgnoreDirectories}

?

我想要完成的是有每个zip和rar文件被提取,但我想跳过在我的一些目录的zip或rar文件的提取。最好的解决方案是什么?

如果有疑问,请阅读文档。

Windows PowerShell支持以下逻辑操作符:

  • -and逻辑与。
  • -or逻辑或。
  • -xor逻辑互斥或。只有当一个语句为TRUE而另一个语句为FALSE时才为TRUE。
  • -not逻辑无。对后面的语句取反。
  • !逻辑不。否定后面的语句。(同-not)

将两个子句放在同一个scriptblock中,并使用相应的逻辑运算符将它们连接起来。对于两个子句之间的逻辑与,使用-and:

Where-Object {
  $_.Extension -match "zip||rar" -and
  $_.FullName -notlike $IgnoreDirectories
}

对于两个子句之间的逻辑或使用-or:

Where-Object {
  $_.Extension -match "zip||rar" -or
  $_.FullName -notlike $IgnoreDirectories
}

对你来说,可能是前者。


请注意,您的正则表达式zip||rar匹配由于两个|之间的空字符串而产生的任何扩展。若要只匹配扩展名为.rar.zip的项,请删除一个管道:$_.Extension -match "zip|rar" .

最新更新