पावरशेल में एम्परसेंड और डबल-एम्परसेंड के लिए प्रतिस्थापन


28

विंडोज के मूल सीएमडी प्रोसेसर में, आप &एक साथ स्ट्रिंग कमांड का उपयोग कर सकते हैं ताकि एक दूसरे के तुरंत बाद चल सके। A &&दूसरी कमांड तभी चलाएगा जब पहली त्रुटि के बिना पूरी होगी।

यह पाइपिंग कमांड से एक साथ अलग |होता है, पहले कमांड से आउटपुट दूसरे कमांड पर नहीं भेजा जाता है, कमांड को बस एक के बाद एक चलाया जाता है और प्रत्येक के लिए आउटपुट को उसके सामान्य स्थान पर भेजा जाता है।

हालांकि, मैं एक त्रुटि जब मैं उपयोग करने की कोशिश पाने &या &&PowerShell में। क्या PowerShell में समान कार्य उपलब्ध हैं, या क्या इस सुविधा को पदावनत किया जा रहा है?



एक दिलचस्प सवाल यह है कि क्या &&
पॉवरशेल के मेटाप्रोग्रामिंग

जवाबों:


35

&PowerShell में ऑपरेटर बस है ;या अर्द्धविराम।

&&PowerShell में ऑपरेटर एक के रूप में चलाने के लिए है ifबयान।

Command ; if($?) {Command}


1

इस फ़ंक्शन को आज़माएं, जिसका उपयोग लगभग उसी तरह किया जा सकता है:

function aa() {
    if($?) {
        $command = [string]::join(' ', $args[1..99])
        & $args[0] $command
    }
}

अब के &&साथ प्रतिस्थापित किया जा सकता है ; aa, जो अभी भी सही नहीं है एक बहुत अधिक रसीला है।

cls && build

हो जाता है

cls; aa build

1
कोई गैर-शैलीगत कारण जो आप उपयोग कर रहे हैं args[0]और नहीं function aa ($cmd)?
रफिन

यह आदेशों को लागू करने का एक क्रूर तरीका है; स्क्रिप्ट ब्लॉक का उपयोग कमांड को पास करने के लिए करें, और उन लोगों के साथ आह्वान करें ., न कि &, क्योंकि उत्तरार्द्ध चर के लिए एक बाल गुंजाइश बनाता है।
दिसंबर को mklement0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.