एक ही स्क्रिप्ट पर bashऔर इसके cmdसाथ अलग-अलग कमांड निष्पादित करने के कई तरीके हैं ।
cmd:;अन्य उत्तर में उल्लिखित लाइनों को अनदेखा करेंगे। यदि अगली पंक्ति कमांड के साथ समाप्त होती है, तो यह अगली पंक्ति को भी अनदेखा करेगा rem ^, क्योंकि ^चरित्र लाइन ब्रेक से बच जाएगा और अगली पंक्ति को टिप्पणी के रूप में माना जाएगा rem।
लेने के लिए के रूप में bashउपेक्षा cmdलाइनों, एक से अधिक तरीके हैं। मैंने ऐसा करने के कुछ तरीके ईजाद किए हैं जो बिना cmdआज्ञा तोड़े :
गैर-मौजूद #आदेश (अनुशंसित नहीं)
यदि स्क्रिप्ट चलने #पर कोई आदेश उपलब्ध नहीं cmdहै, तो हम यह कर सकते हैं:
# 2>nul & echo Hello cmd! & rem ^
echo 'Hello bash!' #
#की शुरुआत में चरित्र cmdलाइन बनाता है bashएक टिप्पणी के रूप में है कि लाइन का इलाज।
#के अंत में चरित्र bashलाइन बाहर टिप्पणी करने के लिए प्रयोग किया जाता है \r, चरित्र के रूप में ब्रायन Tompsett में बताया उसके जवाब । इसके बिना, bashयदि फ़ाइल में \r\nलाइन की समाप्ति आवश्यक है, तो एक त्रुटि होगी cmd।
ऐसा करने के बाद # 2>nul, हम cmdकुछ गैर-मौजूद #कमांड की त्रुटि को अनदेखा करने के लिए ट्रिक कर रहे हैं , जबकि अभी भी कमांड को निष्पादित किया जा रहा है।
यदि कोई #कमांड उपलब्ध है PATHया यदि आपके पास उपलब्ध कमांड पर कोई नियंत्रण नहीं है, तो इस समाधान का उपयोग न करें cmd।
चरित्र echoको अनदेखा करने के लिए उपयोग करना#cmd
हम इसका उपयोग echoआउटपुट के साथ कर सकते हैं, जो कि इस क्षेत्र पर टिप्पणी करने के लिए cmdकमांड को पुनर्निर्देशित करता bashहै:
echo >/dev/null # >nul & echo Hello cmd! & rem ^
echo 'Hello bash!' #
चूंकि #चरित्र का कोई विशेष अर्थ नहीं है cmd, इसलिए इसे पाठ के एक भाग के रूप में माना जाता है echo। हमें बस इतना करना था कि echoकमांड के आउटपुट को रीडायरेक्ट करें और उसके बाद अन्य कमांड डालें।
खाली #.batफाइल
echo >/dev/null # 1>nul 2> #.bat
# & echo Hello cmd! & del #.bat & rem ^
echo 'Hello bash!' #
echo >/dev/null # 1>nul 2> #.batलाइन एक खाली बनाता है #.batफ़ाइल जबकि पर cmd(या की जगह मौजूदा #.bat, यदि कोई हो), और कुछ भी नहीं है, जबकि पर करता है bash।
इस फ़ाइल का उपयोग उस cmdपंक्ति (पंक्तियों) द्वारा किया जाएगा, जो कि कुछ अन्य #कमांड पर होती है, भले ही उसका अनुसरण करती हो PATH।
del #.batपर आदेश cmdविशिष्ट कोड बनाया गया था उस फ़ाइल को हटाता है। आपको केवल अंतिम cmdपंक्ति पर यह करना होगा ।
यदि कोई #.batफ़ाइल आपके वर्तमान कार्य निर्देशिका पर हो सकती है, तो इस समाधान का उपयोग न करें , क्योंकि वह फ़ाइल मिटा दी जाएगी।
Recomended: यहाँ-डॉक्युमेंट का उपयोग करके cmdकमांड्स को अनदेखा करनाbash
:; echo 'Hello bash!';<<:
echo Hello cmd! & ^
:
लाइन ^के अंत में चरित्र को रखकर cmdहम लाइन ब्रेक से बच रहे हैं, और :यहाँ-दस्तावेज़ के सीमांकक के रूप में उपयोग करके , सीमांकक रेखा सामग्री का कोई प्रभाव नहीं पड़ेगा cmd। इस तरह, लाइन खत्म होने के cmdबाद ही अपनी लाइन को अंजाम देंगे :, जैसा व्यवहार होगा bash।
यदि आप दोनों प्लेटफार्मों पर कई लाइनें रखना चाहते हैं और केवल ब्लॉक के अंत में उन्हें निष्पादित करते हैं, तो आप ऐसा कर सकते हैं:
:;( #
:; echo 'Hello' #
:; echo 'bash!' #
:; );<<'here-document delimiter'
(
echo Hello
echo cmd!
) & rem ^
here-document delimiter
जब तक cmdवास्तव में कोई रेखा नहीं है here-document delimiter, तब तक इस समाधान को काम करना चाहिए। आप here-document delimiterकिसी अन्य पाठ में बदल सकते हैं ।
सभी प्रस्तुत समाधानों में, कमांड को केवल अंतिम पंक्ति के बाद निष्पादित किया जाएगा , यदि वे दोनों प्लेटफार्मों पर एक ही काम करते हैं, तो उनके व्यवहार को सुसंगत बनाते हैं।
उन समाधानों \r\nको लाइन ब्रेक के साथ फाइलों में सहेजा जाना चाहिए , अन्यथा वे काम नहीं करेंगे cmd।