विंडोज कमांडलाइन में 1 लाइन के साथ कई कमांड निष्पादित करें?


65

मैं विंडोज कमांडलाइन में सिर्फ एक लाइन के साथ कई कमांड कैसे निष्पादित कर सकता हूं?

इसलिए उदाहरण के लिए, मैं एक SVN अपडेट करना चाहता हूं और फिर सभी फ़ाइलों को किसी अन्य स्थान पर कॉपी कर सकता हूं ...

svn update; copy *.* c:\development\copy\

यह स्पष्ट रूप से काम नहीं करता है। क्या कोई चरित्र या सीमांकक है जैसे '?' इस तरह से कुछ करने के लिए

जवाबों:


105

हाँ वहाँ है। यह है &

&& कमांड 2 को तब निष्पादित करेगा जब कमांड 1 पूरा हो गया है बशर्ते वह विफल न हो।

& परवाह किए बिना अमल करेंगे।


7
&और &&केवल विंडोज में काम करते हैं ' cmd.exe- जो डॉस नहीं है
grawity

22
शब्द के रूप में 'डॉस' का इस्तेमाल अक्सर सीएमडी का वर्णन करने के लिए किया जाता है , और ऑप के रूप में देखने से मुझे लगता है कि वह अभी भी डॉस का उपयोग कर रहा है। पांडित्य होने की आवश्यकता नहीं है :)
फशी

वहाँ: urlencode.blogspot.com/2009/06/vista-desktop-june-09.html वह Windows XP का उपयोग करता है। निश्चित रूप से नहीं डॉस (यह कभी भी अच्छा नहीं लगता है;))
फ़िशी

8
मुझे लगता है कि यह मानना ​​सुरक्षित है कि जब किसी को "डॉस" का उल्लेख किया जाता है, तो उनका वास्तव में मतलब है "विंडोज कमांड प्रॉम्प्ट"। मैं यहां एक अंग पर जा रहा हूं और कहता हूं कि ज्यादातर लोग शायद इन दिनों डॉस का उपयोग नहीं करते हैं। सुधार के लिए धन्यवाद - यह इस दिन और उम्र में थोड़ा अनावश्यक है।
मर्डोक रिपर

@MurdochRipper क्या मतलब है? मैं इस सवाल को अभी डॉस में देख रहा हूं। ;)
एंड्रयू

4

कम से कम MS-DOS 6.22 में मैं एक प्रकार का पैराग्राफ प्रतीक प्राप्त करने के लिए कुंजी Ctrl+ Tका उपयोग करता था । यह वैसे ही काम करता था &जैसा कि फ़ोशी ने उल्लेख किया है। यह केवल तभी काम करेगा, जब आपके पास doskey.exe चल रहा हो।


4

यदि आप 1 लाइन के साथ कई कमांड निष्पादित करना चाहते हैं, जहां आप कमांड्स शुरू कर रहे हैं start, उदाहरण के लिए, यदि आप इसके लिए एक कमांड निष्पादित करना चाहते हैं:

start "" netsh dump && pause

फिर, आपको इसे 2 चरणों में करने की आवश्यकता है (एक-पंक्ति समाधान इस उत्तर के अंत में है)।

सबसे पहले, एक अस्थायी बैच फ़ाइल में कमांड्स लिखें (इस मामले में, आप उपयोग कर सकते हैं &या &&):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

ध्यान दें कि आपको कमांड में साधारण वर्णों के रूप में व्यवहार करने की अनुमति देने के लिए प्रत्येक "&"s(एम्परसेंड) को "भागने" की आवश्यकता है । वैकल्पिक रूप से, आप पाठ संपादक के साथ अस्थायी बैच फ़ाइल बना सकते हैं, जैसे कि नोटपैड।"^"echo

फिर, startबैच फ़ाइल शुरू करने के लिए उपयोग करें:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"


नोट: डबल-उद्धरण चिह्नों की खाली जोड़ी उसके लिए है "Title"जो startखुलने वाली कमांड विंडो के टाइटल-बार में दिखाई जाएगी। यह "Title"तर्क तकनीकी रूप से एक वैकल्पिक तर्क है start, लेकिन यह वास्तव में आवश्यक है , अगर जो कमांड startचलेगा वह दोहरे-उद्धृत है। उदाहरण के लिए, दूसरे उदाहरण में:

start "" "temporary foobar.cmd"

यदि आप इस तरह से दोहरे उद्धरण चिह्नों की खाली जोड़ी को छोड़ते हैं:

start "temporary foobar.cmd"

फिर startएक नई कमांड विंडो खोलेगी, और नई कमांड विंडो के "temporary foobar.cmd"रूप में उपयोग होगी "Title", और नई कमांड विंडो में कुछ भी निष्पादित नहीं होगा)।

यदि आप startपूर्ण होने से pauseपहले बैच फ़ाइल के पूर्ण होने ( खारिज होने के बाद ) के लिए प्रतीक्षा करना चाहते हैं start, तो आपको कमांड में /wस्विच जोड़ने की आवश्यकता है start:

start "" /w foobar.cmd

आप यह सब एक लाइन पर एक साथ रख सकते हैं और यहां तक ​​कि अस्थायी बैच फ़ाइल ( foobar.cmd) हटा सकते हैं :

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

ध्यान दें कि यदि आप अस्थायी बैच फ़ाइल को हटाने जा रहे हैं, तो आपको स्विच के startसाथ चलने की आवश्यकता है /w, अन्यथा, अस्थायी बैच फ़ाइल को संभवतः चलाने से पहले ही हटा दिया जाएगा।


इसके बजाय /wएक फ़ाइल को हटाने से पहले एक छोटी नींद डाल सकता है । timeout 2उदाहरण के लिए, यह करेंगे।
एंटोनियो

@ kevin-fegan आपको एक अस्थायी cmd फ़ाइल की आवश्यकता क्यों है ???
मैक्स

0

यदि आप पहले कमांड को एक के साथ लपेटना चाहते हैं, लेकिन फिर भी दूसरी कमांड को निष्पादित करना चाहते हैं, तो फिर आपको सेमी / सी के साथ इस तरह से भी लपेटना होगा:

cmd / c यदि एबीसी मौजूद है। (rd / q abc) और इको हेलो

यदि आप cmd / c के साथ if उपसर्ग नहीं करते हैं तो पूरा कमांड if (जो आप नहीं चाहते हैं) का हिस्सा बन जाता है।


या आप कह सकते हैं(if exist abc. command₁) & command₂
स्कॉट

@ मुझे पता है कि तारीफ इन साइटों पर एक पाप है, लेकिन start "" cmd /c "(command₁) & (command₂)"कानूनी रूप से वेब पर कहीं भी जवाब नहीं दिया गया है लेकिन ज्यादातर बैच के बयानों को जोड़ने का एकमात्र तरीका है। तुम्हें बधाई।
जॉन केंस

1
मैं तारीफ / बधाई की सराहना करता हूं, लेकिन मुझे समझ नहीं आता कि आप क्या कह रहे हैं। user138334 ने कहा, "यदि आप पहले कमांड को फिर से रैप करना चाहते हैं, ifलेकिन फिर भी दूसरी कमांड को निष्पादित करना चाहते हैं, तो फिर आपको ifएक cmd /cअच्छी तरह से लपेटना होगा ", और मैंने उसे बिना किए एक तरीके से जवाब दिया cmd /c। तो आप यह क्यों कह रहे हैं कि अधिकांश बैच स्टेटमेंट को लिंक करने का एकमात्र तरीका उपयोग कर रहा है cmd /c? और आप startमिश्रण में क्यों फेंक रहे हैं ?
स्कॉट

0

हाँ उपयोग &!

%command1% & %command2% दोनों कमांड चलाता है

%command1% && %command2% पहली कमांड चलाता है, अगर वह दूसरी कमांड चलाता है

%command1% || %command2% पहली कमांड चलाता है, अगर वह सेकंड कमांड चलाने में विफल रहा है

यहाँ देखें


और भी &, &&और ||वास्तव में एक कमांड नहीं है, यह बैच का हिस्सा है। आज्ञा नहीं।
KIRBY INHALES U

और %command%उस स्ट्रिंग को एक कमांड के रूप में निष्पादित कर सकते हैं, यहां
KIRBY INHALES U

-1

मैंने पाया कि काम कर रहे कई कमांड (मैं विंडोज़ 10 होम चला रहा हूं) को 'स्टार्ट' का इस्तेमाल कर रहा हूं। उदाहरण के लिए:

START chrome.exe "page.web.com" & timeout 20

उत्तर में टिप्पणी नहीं होनी चाहिए, जैसे "इसके लिए धन्यवाद", यह आपके समाधान से विचलित करता है। आपको इस उत्तर को संपादित करने पर विचार करना चाहिए, इसलिए यह केवल इस प्रश्न का उत्तर देता है, जितना कि विस्तार से, लेकिन बिना शोर के (यानी वह कमांड जो काम नहीं करता है)
रामहंड

वह जो खोज रहा है, वह है &, नहीं start!
नेटवॉस्ट्रेशन 22

इससे क्या समस्या हल होती है? जब आप बिना कमांड लाइन टाइप करते हैं तो क्या होता है start?
स्कॉट

-2

एक छोटे नाम के साथ एक बैच फ़ाइल बनाओबैट

add cmd /c %1 
    cmd /c %2 
rem

और 9 लाइनों पर और बचाने के लिए

फिर दोहरे उद्धरण चिह्नों का उपयोग करें

bat "command one" "command two" "command three" 

cmd /c प्रत्येक कमांड को चलाएगा और अगली पंक्ति के लिए यह नहीं कहेगा कि यह आसान है && से बेहतर है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.