如何在PowerShell中否定条件测试?
例如,如果我想检查目录C:\ Code,我可以运行:
if (Test-Path C:\Code){
write "it exists!"
}
有没有办法否定这种情况,例如: (非工作):
if (Not (Test-Path C:\Code)){
write "it doesn't exist!"
}
解决方法:
if (Test-Path C:\Code){
}
else {
write "it doesn't exist"
}
这很好用,但我更喜欢内联。
答案 0 :(得分:440)
你差不多用Not
了。它应该是:
if (-Not (Test-Path C:\Code)) {
write "it doesn't exist!"
}
您还可以使用!
:if (!(Test-Path C:\Code)){}
只是为了好玩,你也可以使用按位排他,或者,虽然它不是最易读/可理解的方法。
if ((test-path C:\code) -bxor 1) {write "it doesn't exist!"}
答案 1 :(得分:8)
如果你像我一样不喜欢双括号,你可以使用函数
function not ($cm, $pm) {
if (& $cm $pm) {0} else {1}
}
if (not Test-Path C:\Code) {'it does not exist!'}
答案 2 :(得分:3)
如果您不喜欢双括号或不想编写函数,则可以使用变量。
$path = Test-Path C:\Code
if (!$path) {
write "it doesn't exist!"
}
答案 3 :(得分:0)
Powershell还接受C / C ++ / C *而不是运算符
if(!(Test-Path C:\ Code)){写“它不存在!” }
我经常使用它,因为我已经习惯了C * ... 允许代码压缩/简化... 我也觉得它更优雅...