2011-11-11 13 views
175

PowerShell'de koşullu bir testi nasıl iptal edebilirim? Ben dizin C kontrol etmek istiyorsanızPowerShell'deki bir koşulu nasıl iptal edebilirim?

Örneğin,: \ Kanunu, ben çalıştırabilirsiniz:

if (Test-Path C:\Code){ 
    write "it exists!" 
} 

, mesela bu şartı geçersiz kılmak için bir yolu var mı (Çalışma dışı):

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

Geçici çözüm:

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

Bu iyi çalışır, ama ben bir şey satır içi tercih ediyorum.

cevap

323

Neredeyse Not ile vardı. en okunabilir/anlaşılır yöntem olmasa, if (!(Test-Path C:\Code)){}

Sadece eğlence için, ayrıca bit şeklinde özel kullanabilir veya: Ayrıca ! kullanabilirsiniz

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

: Öyle olmalı.

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

İlginç bir işlev, bu nedenle '-not'' geleneksel alternatif gelir kullanabilirsiniz! ' sonra? Bir şekilde -eq' ve -ne' için de geleneksel alternatifleri alabilir miyim? –

+6

Hayır, '-not' bir alternatif ile gelen tek mantıksal işleç ('help about_Logical_Operators'') ve işleçler taklit edilemez. – Rynant

+6

Teşekkürler, '' 'gerekli parantez kullanımı aslında eksik. –

8

Eğer benim gibi olan ve çift parantez sevmediğim varsa,

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

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

Example

+0

Bunu sevdim, ama muhtemelen her yerde bu 'uygulamayı' kullanamazsınız (örneğin 'Test-Path değil - yol C: \ Code 'çalışmıyor. Ayrıca bu ilgili [post] (http://stackoverflow.com/q/31888580/450913) adresine bakınız. – orad

İlgili konular