如何否定PowerShell中的条件?

时间:2011-11-11 14:50:10

标签: windows powershell

如何在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"
}

这很好用,但我更喜欢内联。

4 个答案:

答案 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!'}

Example

答案 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 * ... 允许代码压缩/简化... 我也觉得它更优雅...