2011-11-11 1 views
175

PowerShellで条件付きテストを否定するにはどうすればよいですか?私は、ディレクトリCをチェックしたい場合はPowerShellで条件を否定するにはどうすればよいですか?

たとえば、:\コード、私は実行することができます。

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

これは正常に動作しますが、私は何かをインライン好みます。

答えて

323

ほとんどの場合、Notとしました。それは最も読みやすい/理解しやすい方法ではないのですけれども、if (!(Test-Path C:\Code)){}

ちょうど楽しみのために、あなたはまた、ビット単位の排他的使用することができますか:あなたはまた、!を使用することができます

if (-Not (Test-Path C:\Code)) { 
    write "it doesn't exist!" 
} 

:それはする必要があります。

if ((test-path C:\code) -bxor 1) {write "it doesn't exist!"} 
+0

興味深い機能なので、 '-not'は'の伝統的な代替が付属していますを使用することができます! 'それで?私は何とか '-eq'と' -ne'の伝統的な選択肢を何とか得ることができますか? –

+6

いいえ、 '-not'は代替(' help about_Logical_Operators'を参照)に付随する唯一の論理演算子であり、演算子はエイリアス化できません。 – Rynant

+6

ありがとう、私は、 '!'の使用には括弧が必要であるという事実がありませんでした。 –

8

あなたが私に似ていると、二重括弧を嫌う場合は、

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

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

Example

+0

私はこれが好きですが、おそらくどこでもこの 'not '実装を使用することはできません(例えば' not Test-Path-パスC:\ Code'は動作しません)。この関連[post](http://stackoverflow.com/q/31888580/450913)も参照してください。 – orad

関連する問題