क्या यूनिक्स लाइन एंडिंग के साथ बैच फाइल लिखना सुरक्षित है?


15

मुझे लगता है कि मैं एक बैच फ़ाइल में बग के पार भाग गया क्योंकि यह यूनिक्स लाइन के अंत के साथ लिखा गया था। क्या यह विंडोज़ में बैच फ़ाइलों को चलाने वाली cmd.exe के साथ एक ज्ञात समस्या है?


1
मुझे कभी कोई समस्या नहीं हुई, और मैं हमेशा यूनिक्स लाइन अंत का उपयोग करता हूं। लेकिन इसका मतलब यह नहीं है कि वहाँ कुछ समस्या नहीं है मैं सिर्फ बहुत याद करने के लिए भाग्यशाली रहा है।
ज़ॉडेचे सेप

2
आप किस बग में भागे? प्रारंभ करने में विफल कमांड्स? या बस यह है कि ऐसा लगता है जैसे नोटपैड के साथ फ़ाइल खोलने पर लाइन एंडिंग नहीं होते हैं?
हेन्नेस

जवाबों:


11

यह वास्तव में एक "बग" नहीं है ... जैसा कि यह डिजाइन है। विंडोज नई-लाइनों को "\ r \ n" ... या "कैरिज रिटर्न" और "न्यू लाइन" संयोजन के रूप में परिभाषित किया गया है ... जबकि * निक्स फ्लेवर कैरिज रिटर्न को छोड़ना पसंद करते हैं। जहाँ भी संभव हो, आपको हमेशा विंडोज में किसी भी चीज़ में "\ r \ n" का उपयोग करना चाहिए। कुछ भी गलत तरीके से व्याख्या की जा सकती है ... और अप्रत्याशित परिणामों का एक बड़ा कारण है।


मुझे एक समस्या सामने आई जहां कॉल: लेबल किसी लेबल पर नहीं गया, लेकिन फ़ाइल पर बाद में उसी कॉल ने लेबल पर छलांग लगाई। प्रश्न में फ़ाइल \ n पंक्ति के अंत का उपयोग कर रही थी। मैंने अपने प्रोजेक्ट की सभी बैच फ़ाइलों के लिए \ r \ n लाइन एंडिंग्स पर स्विच किया और समस्या चली गई। मैंने यह पुष्टि करने के लिए \ n एन्डिंग्स के साथ पुन: परीक्षण नहीं किया कि यह सिर्फ एक बार की अस्थायी नहीं थी (स्क्रिप्ट को चलने में लगभग एक घंटा लगता है)।
शमूएल

2
नोटपैड यूनिक्स लाइन एंडिंग को संभाल नहीं सकता है, लेकिन वर्डपैड, पावरशेल, कई अन्य चीजें भी कर सकता है।
माइकल हैम्पटन

कैम आप कुछ और उदाहरण प्रदान करते हैं जब .bat फाइलें निक्स लाइन एंडिंग के साथ सही तरीके से काम नहीं करती हैं?
मिकाल कोर्दास

@MichalKordas हर Microsoft OS और * nix वितरण के हर संस्करण के माध्यम से जाने और परीक्षण किए बिना, यह एक लंबा ऑर्डर देने के लिए है। यह वास्तव में इस विषय पर एक विस्तृत चर्चा में जाने की जगह नहीं है। सर्वोत्तम प्रथाएं ऐसी हैं कि Windows \ r \ n का उपयोग करता है, * nix \ n का उपयोग करता है, और कभी-कभी मैक सिर्फ a \ r का उपयोग करता है। चूंकि केवल विंडोज़ बैच फ़ाइलों का उपयोग करता है, इसलिए यह मान लेना सबसे अच्छा है कि आपको \ n \ n का उपयोग करना चाहिए।
theCompWiz

4

ऐसा लगता है कि जब एक फ़ाइल में (यूनिक्स लाइन-एंडिंग) का उपयोग किया जाता है तो बैच लेबल को छोड़ दिया LFजाता है .bat


3

बैच फ़ाइलों के लिए यूनिक्स लाइन एंडिंग और विंडो लाइन एंडिंग के बीच कोई अंतर नहीं है।

goto, callया यहां तक ​​कि लाइनफ़ीड चर का निर्माण दोनों शैलियों के साथ काम करता है।

और जैसा कि बैच पार्सर ने प्रतिशत विस्तार चरण के बाद सीधे गाड़ी रिटर्न को हटा दिया, वे कभी भी बड़ी भूमिका नहीं निभाएंगे।

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