使用两个Where命令运行两个检查
我正在使用这个命令使用两个Where命令运行两个检查,where,powershell-4.0,Where,Powershell 4.0,我正在使用这个命令 Where {$_.Extension -match "zip||rar"} 但是也需要使用这个命令 Where {$_.FullName -notlike $IgnoreDirectories} 我应该像中那样使用&&或II吗 Where {$_.Extension -match "zip||rar"} && Where {$_.FullName -notlike $IgnoreDirectories} 或 ? 我试图完成的是提取每个zip和rar文件
Where {$_.Extension -match "zip||rar"}
但是也需要使用这个命令
Where {$_.FullName -notlike $IgnoreDirectories}
我应该像中那样使用&&或II吗
Where {$_.Extension -match "zip||rar"} && Where {$_.FullName -notlike $IgnoreDirectories}
或
?
我试图完成的是提取每个zip和rar文件,但我想跳过提取我的一些目录中的zip或rar文件。最好的解决方案是什么?如果有疑问,请阅读
Windows PowerShell支持以下逻辑运算符
逻辑与。仅当两个语句都为真时才为真-和
逻辑或。如果其中一条或两条语句都为真,则为真-或
逻辑异或。仅当其中一条语句为真,另一条语句为假时,才为真-xor
逻辑非。否定它后面的语句-非
代码>逻辑不是。否定它后面的语句。(与
相同-非
)
-和:
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
的项目,请删除一个管道:$\uuu.extension-match“zip | rar”您的建议无效,因为我没有收到错误“您必须在表达式或语句中意外标记“$.FullName”后提供一个值表达式。”我如何解决此错误?我想这就是为什么我需要两个独立的where's。这似乎可以解决表达式问题,但它会起作用吗?其中{($.Extension-match“zip | | | prd”)-和($.FullName-notlike$ignore)}应该是$\uuuu
,而不仅仅是$
。不知道下划线是怎么丢失的。已修复。不需要括号,因为-match
和-notlike
运算符的值高于逻辑运算符的值。此外,正则表达式中仍有双管道,因此表达式仍将匹配任何扩展。除此之外,条件是否有效取决于$ignore
的值以及您希望它排除的内容。谢谢,在我当前的过程完成后,我将尝试您的建议并删除括号。
Where-Object {
$_.Extension -match "zip||rar" -or
$_.FullName -notlike $IgnoreDirectories
}