मैं एक विंडोज सीएमडी कंसोल में दो कमांड चलाना चाहता हूं।
लिनक्स में मैं इसे इस तरह से करूँगा
touch thisfile ; ls -lstrh
यह विंडोज पर कैसे किया जाता है?
मैं एक विंडोज सीएमडी कंसोल में दो कमांड चलाना चाहता हूं।
लिनक्स में मैं इसे इस तरह से करूँगा
touch thisfile ; ls -lstrh
यह विंडोज पर कैसे किया जाता है?
जवाबों:
2000 के बाद से सभी Microsoft OS पर यह पसंद है, और आज भी अच्छा है:
dir & echo foo
यदि आप चाहते हैं कि दूसरा कमांड केवल तभी निष्पादित हो, जब पहला सफलतापूर्वक समाप्त हो जाए:
dir && echo foo
एक लाइन पर कई कमांड को निष्पादित करने के लिए सिंगल एम्परसेंड (और) सिंटैक्स विंडोज एक्सपी, विंडोज 2000, और कुछ पहले एनटी संस्करणों में वापस चला जाता है। (4.0 कम से कम, यहाँ एक टिप्पणीकार के अनुसार।)
इसके बारे में कुछ अन्य बिंदु हैं जो आपको इस पृष्ठ को नीचे स्क्रॉल करने पर मिलेंगे।
ऐतिहासिक डेटा का अनुसरण उन लोगों के लिए किया जाता है, जो इसे शैक्षिक मान सकते हैं।
इससे पहले, && सिंटैक्स केवल शेल रिप्लेसमेंट 4DOS की एक विशेषता थी, इससे पहले कि यह फीचर Microsoft कमांड दुभाषिया में जोड़ा गया था।
Windows 95, 98 और ME में, आप इसके बजाय पाइप वर्ण का उपयोग करेंगे:
dir | echo foo
MS-DOS 5.0 और बाद में, कमांड दुभाषिया के कुछ पुराने विंडोज और एनटी संस्करणों के माध्यम से, (अनडाइम्डनेटेड) कमांड सेपरेटर कैरेक्टर 20 (Ctrl + T) था, जिसे मैं ^ T के साथ यहां प्रस्तुत करूंगा।
dir ^T echo foo
cmd
प्रॉम्प्ट में भी काम करता है , इसलिए मुझे लगता है कि यह एक बुरी आदत नहीं है। :)
प्रलेखन से एक उद्धरण:
कई आदेशों और सशर्त प्रसंस्करण प्रतीकों का उपयोग करना
आप सशर्त प्रसंस्करण प्रतीकों का उपयोग करके एक कमांड लाइन या स्क्रिप्ट से कई कमांड चला सकते हैं। जब आप सशर्त प्रसंस्करण प्रतीकों के साथ कई कमांड चलाते हैं, तो सशर्त प्रसंस्करण प्रतीक के बाईं ओर स्थित सशर्त प्रसंस्करण प्रतीक अधिनियम के दाईं ओर स्थित कमांड।
उदाहरण के लिए, यदि आप पिछली कमांड के विफल होने पर ही कमांड चलाना चाहते हैं। या, यदि पिछली कमांड सफल है, तो आप केवल एक कमांड चलाना चाह सकते हैं।
आप कई आदेशों को पारित करने के लिए निम्न तालिका में सूचीबद्ध विशेष वर्णों का उपयोग कर सकते हैं।
& [...]
command1 & command2
एक कमांड लाइन पर कई कमांड को अलग करने के लिए उपयोग करें। Cmd.exe पहली कमांड चलाता है, और फिर दूसरी कमांड।
&& [...]
command1 && command2
आदेश का पालन करने के लिए प्रयोग करें & केवल तभी जब प्रतीक से पहले का आदेश सफल हो। Cmd.exe पहली कमांड चलाता है, और फिर पहली कमांड सफलतापूर्वक पूरा होने पर ही दूसरी कमांड चलाता है।
|| [...]
command1 || command2
निम्नलिखित कमांड चलाने के लिए उपयोग करें || केवल अगर आदेश पूर्ववर्ती || विफल रहता है। Cmd.exe पहली कमांड चलाता है, और उसके बाद ही दूसरी कमांड चलाता है यदि पहला कमांड सफलतापूर्वक पूरा नहीं हुआ है (शून्य से अधिक त्रुटि कोड प्राप्त करता है)।
( ) [...]
(command1 & command2)
कई कमांड्स को ग्रुप या नेस्ट करने के लिए उपयोग करें।
; or ,
command1 parameter1;parameter2
अलग-अलग कमांड मापदंडों का उपयोग करें।
cmd /c "echo foo & echo bar"
।
vagrant up && vagrant ssh
विंडोज 10 पर उद्धरण चिह्नों के बिना काम किया
&
- यह अतुल्यकालिक बनाता है और दोनों को समानांतर में चलाता है। मैं अटक गया था क्योंकि मैं के &&
साथ प्रयोग कर रहा था तुल्यकालिक है और केवल तभी जारी रहता है जब पहला सफल होता है!
&
आदेशों को अतुल्यकालिक या समानांतर नहीं बनाता है। पूरा होने के बादcommand1 & command2
चलेगा । सफलता या असफलता अप्रासंगिक है। command2
command1
command1
&
के लिए बैश बराबर है ;
(चलाने के आदेशों) और &&
की बैश बराबर है &&
(चलाने के आदेशों केवल जब पिछले एक त्रुटि की वजह से नहीं किया गया है)।
;
लिनक्स में नहीं देखा है
;
पहली कमांड को चलाने का मतलब है, इसके खत्म होने का इंतजार करें, फिर दूसरी कमांड को चलाएं। &
पहला कमांड चलाने का मतलब है, इसे बैकग्राउंड में रखना, और दूसरा कमांड चलाना। इसलिए दोनों कार्यक्रम एक साथ शुरू होते हैं। ध्यान दें कि ये प्रतीकों का संयोजन नहीं कर रहे हैं, वे पहले आदेश पर प्रतीकों को पीछे छोड़ रहे हैं; आप progname &
दूसरी कमांड के बिना बैकग्राउंड में सिंगल कमांड लॉन्च कर सकते हैं ।
आप एक के बाद एक कमांड चलाने और उपयोग कर सकते हैं। उदाहरण:c:\dir & vim myFile.txt
यदि आप एक cmd शॉर्टकट बनाना चाहते हैं (उदाहरण के लिए अपने डेस्कटॉप पर) तो / k पैरामीटर (/ k का अर्थ है, / c) विंडो को जोड़ेगा:
cmd /k echo hello && cd c:\ && cd Windows
आप बहुत जल्द ही मूल्यांकन किए जा रहे पर्यावरण चर की समस्या को दूर करने के लिए कॉल का उपयोग कर सकते हैं - उदा
set A=Hello & call echo %A%
echo
में पुराने मूल्य को प्रिंट करता है , नए मूल्य को नहीं। कम से कम, यह वही है जो मैं अपने विंडोज 7 बॉक्स पर देखता हूं।
setlocal EnableDelayedExpansion
एक स्क्रिप्ट या में cmd /v
) का उपयोग करना है। उदाहरण के लिए timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
:।
एक ही पंक्ति पर कई कमांड चलाने पर कई प्रोसेसिंग प्रतीकों का उपयोग किया जा सकता है, और कुछ मामलों में प्रसंस्करण को पुनर्निर्देशन करने के लिए नेतृत्व कर सकता है, अन्य मामले में आउटपुट को बदल सकता है, या बस विफल हो सकता है। एक महत्वपूर्ण मामला समान लाइन कमांड पर चल रहा है जो चर को हेरफेर करता है।
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!
0 1
जैसा कि आप ऊपर के उदाहरण में देखते हैं, जब चर का उपयोग करने वाले कमांड को एक ही पंक्ति में रखा जाता है, तो आपको अपने चर मूल्यों को अपडेट करने के लिए विलंबित विस्तार का उपयोग करना चाहिए। यदि आपका वैरिएबल अनुक्रमित है, तो उसी पंक्ति पर उसका मान अपडेट करने के लिए %% संशोधक के साथ CALL कमांड का उपयोग करें:
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%
path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
इसलिए, मैं RegAsm
संदर्भ मेनू से रनिंग (असेंबली असेंबली) के विशिष्ट कार्य को सक्षम करने का प्रयास कर रहा था । मेरे पास मुद्दा यह था कि इससे पहले कि मैं इसे पढ़ पाऊं, परिणाम सामने आ जाएगा और दूर चला जाएगा। इसलिए मैंने पाइपिंग करने की कोशिश की Pause
, जो कमांड के फेल होने पर काम नहीं करता (जैसा कि यहां बताया गया है कि पॉज़ कमांड काम नहीं करता है । स्क्रिप्ट और यहाँ बैच फ़ाइल कमांड PAUSE काम नहीं करता है )। इसलिए मैंने कोशिश की cmd /k
लेकिन वह खिड़की को और अधिक कमांड के लिए खुला छोड़ देता है (मैं सिर्फ परिणाम पढ़ना चाहता हूं)। इसलिए मैंने श्रृंखला में एक pause
अनुवर्ती जोड़ा exit
, जिसके परिणामस्वरूप निम्नलिखित हैं:
cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
यह एक आकर्षण की तरह काम करता है - RegAsm फ़ाइल पर चलता है और इसके परिणाम दिखाता है, फिर "जारी रखने के लिए कोई भी कुंजी दबाएं ..." शीघ्र दिखाया जाता है, फिर जब एक कुंजी दबाया जाता है तो कमांड प्रॉम्प्ट विंडो बंद हो जाती है।
PS उन अन्य लोगों के लिए जो रूचि ले सकते हैं, आप एक। Dllfile एसोसिएशन को .dll फ़ाइलों में जोड़ने के लिए निम्नलिखित .reg फ़ाइल प्रविष्टियों का उपयोग कर सकते हैं और फिर उस पर एक RegAsm कमांड एक्सटेंशन (भागे हुए उद्धरण और बैकस्लैश पर ध्यान दें):
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"
अब मेरे पास असेंबली रजिस्टर करने के लिए एक अच्छा राइट-क्लिक मेनू है।
मैं एक ही विंडो में दो पिंग करने की कोशिश करता हूं, और यह एक ही लाइन पर एक सीरियल कमांड है। पहला खत्म करने के बाद, दूसरी कमांड चलाएं।
समाधान start /b
विंडोज 7 कमांड प्रॉम्प्ट के साथ संयोजन करना था ।
हमेशा की तरह, बिना /b
, और एक अलग विंडो में लॉन्च करें।
एक ही पंक्ति में लॉन्च करने के लिए कमांड का उपयोग किया जाता है:
start /b command1 parameters & command2 parameters
किसी भी तरह, यदि आप आउटपुट को पार्स करना चाहते हैं, तो मैं इसका उपयोग करने की सलाह नहीं देता। मैंने देखा कि आउटपुट कमांड के आउटपुट के बीच में है।
ठीक है, आपके पास दो विकल्प हैं: पाइपिंग, या बस &
:
DIR /S & START FILE.TXT
या,
tasklist | find "notepad.exe"
पाइपिंग ( |
) एक कमांड के आउटपुट को लेने और दूसरे में डालने के लिए अधिक है। और ( &
) कह रहा है कि यह चलाओ, और वह।
&
और क्या होता है और |
वे कैसे भिन्न होते हैं, यदि बिल्कुल? अभी इन अवधारणाओं से अपरिचित लोग अपने लिए तय नहीं कर पा रहे हैं कि उनके मामलों में किसका इस्तेमाल किया जाए।
नहीं, नहीं cd / && tree && echo %time%
। वह समय गूँज रहा है जब पहली कमांड निष्पादित की गई है।
पाइपिंग में कुछ समस्या है, लेकिन यह तब तक महत्वपूर्ण नहीं है जब तक लोग जानते हैं कि यह कैसे काम करता है।
एक और उदाहरण: उदाहरण के लिए, जब हम gulp
इसके बजाय बिल्ड सिस्टम का उपयोग करते हैं
gulp
- डिफ़ॉल्ट> बिल्ड
gulp build
- बिल्ड-फोल्डर बनाएं
gulp watch
- फाइल-वॉच शुरू करें
gulp dist
- dist-folder का निर्माण करें
हम एक लाइन के साथ ऐसा कर सकते हैं:
cd c:\xampp\htdocs\project & gulp & gulp watch
जब आप एक पंक्ति में चर का उपयोग या हेरफेर करने की कोशिश करते हैं तो उनकी सामग्री से सावधान रहें! उदाहरण के लिए निम्न की तरह एक चर
PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
यदि आप इसका उपयोग करते हैं तो आपको बहुत सी अनचाही-परेशानी हो सकती है %PATH%
%PATH%
कोष्ठक की समस्या को संभालने के लिए उपयोग करने की अनुमति नहीं देते हैं%USERPROFILE%
?हाँ वहाँ है। यह है &
।
&&
कमांड 2 को तब निष्पादित करेगा जब कमांड 1 पूरा हो गया है बशर्ते वह विफल न हो।
&
परवाह किए बिना अमल करेंगे।
&
एक पंक्ति में कमांड का उपयोग करने के लिए खिड़कियों में प्रतीक का उपयोग करें
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
जैसे लिनक्स में हम उपयोग करते हैं,
touch thisfile ; ls -lstrh
यह सरल है: बस उन्हें &&
संकेतों के साथ अंतर करें । उदाहरण:
echo "Hello World" && echo "GoodBye World".
"अलविदा दुनिया" को "हैलो वर्ल्ड" के बाद मुद्रित किया जाएगा।
&&
एक सशर्त ऑपरेटर है, अगली कमांड केवल तभी निष्पादित की जाती है जब पहली कमांड सुसाइड की जाती है (एररवेल = 0)
Hello World
फेल न हो। जैसा @ ज़ेब ने कहा है, &&
सशर्त है। &
यदि पिछला सफल था या नहीं, तो इसकी परवाह किए बिना कमांड चलाता है।