web-dev-qa-db-ja.com

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"
}

これはうまくいきますが、インラインのものを好むでしょう。

231
Ben McCormack

あなたはほとんど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!"}
443
Rynant

あなたが私のようで二重括弧が嫌いなら、あなたは関数を使うことができます。

function not ($cm, $pm) {
  if (& $cm $pm) {0} else {1}
}

if (not Test-Path C:\Code) {'it does not exist!'}

8
Steven Penny

PowershellはC/C++/C * not演算子も受け入れます

if(!(Test-Path C:\ Code)){write「存在しません!」 }

私はC *に慣れているので頻繁に使用します...コードの圧縮/単純化を可能にします...私もそれがよりエレガントであることがわかります...

1
ZEE