मैं Windows CMD में एक पंक्ति में दो आदेश कैसे चला सकता हूं?




batch-file command-line (11)

2000 के बाद से यह सभी माइक्रोसॉफ्ट ओएस पर, और आज भी अच्छा है:

dir & echo foo

यदि आप दूसरे आदेश को निष्पादित करना चाहते हैं तो केवल पहले सफलतापूर्वक बाहर निकलें:

dir && echo foo

एक लाइन पर एकाधिक कमांड निष्पादित करने के लिए सिंगल एम्पर्सेंड (&) वाक्यविन्यास विंडोज एक्सपी, विंडोज 2000, और कुछ पुराने एनटी संस्करणों पर वापस चला जाता है। (4.0 कम से कम, यहां एक टिप्पणीकर्ता के अनुसार।)

इसके बारे में कुछ और मुद्दे हैं जो आपको इस पृष्ठ पर स्क्रॉलिंग मिलेंगे।

ऐतिहासिक डेटा निम्नानुसार है, जो इसे शैक्षिक पाते हैं।

इससे पहले, & quot; सिंटैक्स केवल माइक्रोसॉफ्ट कमांड दुभाषिया में जोड़ा गया था इससे पहले कि & quot वाक्य शेल प्रतिस्थापन 4DOS की एक विशेषता थी।

विंडोज 95, 98 और एमई में, आप इसके बजाय पाइप चरित्र का उपयोग करेंगे:

dir | echo foo

एमएस-डॉस 5.0 और बाद में, कमांड दुभाषिया के कुछ पूर्व विंडोज और एनटी संस्करणों के माध्यम से, (अनियंत्रित) कमांड विभाजक चरित्र 20 (Ctrl + T) था जिसे मैं यहां ^ टी के साथ प्रस्तुत करूंगा।

dir ^T echo foo

मैं विंडोज सीएमडी कंसोल में दो कमांड चलाने के लिए चाहता हूं।

लिनक्स में मैं ऐसा करूँगा: इस touch thisfile ; ls -lstrh touch thisfile ; ls -lstrh

विंडोज़ पर यह कैसे किया जाता है?


आप एक के बाद एक आदेश का उपयोग और चलाने के लिए कर सकते हैं। उदाहरण: c:\dir & vim myFile.txt


एक और उदाहरण: उदाहरण के लिए, जब हम gulp बिल्ड सिस्टम का उपयोग करते हैं, तो इसके बजाए

gulp - डिफ़ॉल्ट> निर्माण

gulp build - बिल्ड-फ़ोल्डर बनाएं

gulp watch - फ़ाइल घड़ी शुरू करें

gulp dist - डिस्ट-फ़ोल्डर बनाएं

हम इसे एक पंक्ति के साथ कर सकते हैं:

cd c:\xampp\htdocs\project & gulp & gulp watch

एक ही पंक्ति पर कई कमांड चलाते समय कई प्रोसेसिंग प्रतीकों का उपयोग किया जा सकता है, और कुछ मामलों में रीडायरेक्शन प्रोसेसिंग, अन्य मामले में आउटपुट बदलने या बस असफल हो सकता है। एक महत्वपूर्ण मामला एक ही लाइन कमांड पर रख रहा है जो चर का उपयोग करता है।

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

जैसा कि आप उपर्युक्त उदाहरण में देखते हैं, जब चर का उपयोग करने वाले कमांड एक ही पंक्ति पर रखे जाते हैं, तो आपको अपने परिवर्तनीय मानों को अपडेट करने के लिए देरी से विस्तार का उपयोग करना होगा। यदि आपका चर अनुक्रमित है, तो उसी पंक्ति पर अपना मान अपडेट करने के लिए %% संशोधक के साथ कॉल कमांड का उपयोग करें:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5

खैर, आपके पास दो विकल्प हैं: पाइपिंग, या बस & :

DIR /S & START FILE.TXT

या,

tasklist | find "notepad.exe"

पाइपिंग ( | ) एक कमांड के आउटपुट लेने और इसे दूसरे में डालने के लिए अधिक है। और ( & ) बस यह कह रहा है, और वह।


जब आप एक पंक्ति में चर का उपयोग या कुशलतापूर्वक उपयोग करने का प्रयास करते हैं तो उनकी सामग्री से सावधान रहें! निम्न की तरह एक चर जैसे

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

यदि आप इसे %PATH% रूप में उपयोग करते हैं तो बहुत सारी असुरक्षित परेशानी हो सकती है

  1. समापन कोष्ठक आपके समूह विवरण को समाप्त कर देते हैं
  2. डबल कोट्स आपको कोष्ठक समस्या को संभालने के लिए %PATH% का उपयोग करने की अनुमति नहीं देते हैं
  3. और %USERPROFILE% जैसे संदर्भित चर क्या होगा?

दस्तावेज से एक उद्धरण:

एकाधिक कमांड और सशर्त प्रसंस्करण प्रतीकों का उपयोग करना

आप सशर्त प्रोसेसिंग प्रतीकों का उपयोग कर एकल कमांड लाइन या स्क्रिप्ट से एकाधिक कमांड चला सकते हैं। जब आप सशर्त प्रसंस्करण प्रतीकों के साथ एकाधिक आदेश चलाते हैं, तो सशर्त प्रसंस्करण प्रतीक के बाईं ओर कमांड के परिणामों के आधार पर सशर्त प्रसंस्करण प्रतीक अधिनियम के दाईं ओर दिए गए आदेश।

उदाहरण के लिए, यदि आप पिछला कमांड विफल रहता है तो आप केवल एक आदेश चला सकते हैं। या, यदि आप पिछला कमांड सफल होते हैं तो आप केवल एक आदेश चला सकते हैं।

आप एकाधिक कमांड पास करने के लिए निम्न तालिका में सूचीबद्ध विशेष वर्णों का उपयोग कर सकते हैं।

  • & [...]
    command1 & command2
    एक कमांड लाइन पर एकाधिक कमांड को अलग करने के लिए प्रयोग करें। Cmd.exe पहला आदेश चलाता है, और फिर दूसरा आदेश चलाता है।

  • && [...]
    command1 && command2
    कमांड को चलाने के बाद कमांड को चलाने के लिए उपयोग करें और केवल तभी जब प्रतीक से पहले कमांड सफल होता है। Cmd.exe पहला आदेश चलाता है, और उसके बाद केवल दूसरा आदेश चलाता है यदि पहला आदेश सफलतापूर्वक पूरा हो जाता है।

  • || [...]
    command1 || command2
    निम्नलिखित आदेश चलाने के लिए प्रयोग करें || केवल अगर आदेश से पहले || विफल रहता है। Cmd.exe पहला कमांड चलाता है, और फिर दूसरा आदेश केवल तभी चलाता है जब पहला आदेश सफलतापूर्वक पूरा नहीं हुआ (शून्य से अधिक त्रुटि कोड प्राप्त करता है)।

  • ( ) [...]
    (command1 & command2)
    समूह या घोंसला एकाधिक आदेशों के लिए उपयोग करें।

  • ; or ,
    command1 parameter1;parameter2
    कमांड पैरामीटर अलग करने के लिए प्रयोग करें।


नहीं, cd / && tree && echo %time% । प्रतिबिंबित समय उस समय पर होता है जब पहला आदेश निष्पादित होता है।

पाइपिंग में कुछ मुद्दा है, लेकिन जब तक लोग जानते हैं कि यह कैसे काम करता है तब तक यह महत्वपूर्ण नहीं है।


यदि आप एक cmd शॉर्टकट बनाना चाहते हैं (उदाहरण के लिए अपने डेस्कटॉप पर) जोड़ें / के पैरामीटर (/ के मतलब है, / c विंडो बंद कर देगा):

cmd /k echo hello && cd c:\ && cd Windows

& बैश के बराबर है ; (रन कमांड) और && बैश समकक्ष && (केवल रन कमांड है जब पिछली बार त्रुटि नहीं हुई है)।


यह आसान है: बस उन्हें & चिन्हों से अलग करें। उदाहरण:

echo Hello World && echo GoodBye World

हैलो वर्ल्ड के बाद अलविदा दुनिया मुद्रित की जाएगी।





cmd