2011-11-11 13 views
175

मैं PowerShell में एक सशर्त परीक्षण को कैसे अस्वीकार करूं?मैं 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 (-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!"} 
+0

दिलचस्प है, तो '' -not' के पारंपरिक विकल्प के साथ आता है का उपयोग कर सकते हैं! ' फिर? क्या मैं किसी भी तरह '-eq' और' -ne' के लिए पारंपरिक विकल्प भी प्राप्त कर सकता हूं? –

+6

नहीं, '-not' एकमात्र लॉजिकल ऑपरेटर है जो वैकल्पिक के साथ आता है (देखें' 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

मुझे यह पसंद है, लेकिन शायद हर जगह इस 'कार्यान्वयन' का उपयोग नहीं कर सकता (उदाहरण के लिए 'टेस्ट-पथ नहीं - पथ सी: \ कोड' काम नहीं करेगा)। यह संबंधित [पोस्ट] भी देखें (http://stackoverflow.com/q/31888580/450913)। – orad

संबंधित मुद्दे