एक ही स्क्रिप्ट पर 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
।