2013-01-16 13 views
21

मैं एक बैच फ़ाइल लिख रहा हूं जहां मुझे '!' युक्त एक स्ट्रिंग आउटपुट करने की आवश्यकता है एक और फाइल के लिए। लेकिन जब मैं उस स्ट्रिंग को दूसरी फ़ाइल में गूंजता हूं, तो यह "!" को हटा देता है आउटपुट से।% चर% और चर के बीच अंतर! बैच फ़ाइल में

उदाहरण के लिए: इनपुट: new_file.txt में

set LINE=Hi this is! output 
echo !LINE!>>new_file.txt 

आउटपुट है:

Hi this is output 

इसके अलावा, अगर इनपुट new_file.txt में

set LINE=Hello!! this is output!! 
echo !LINE!>>new_file.txt 

आउटपुट है:

Hello 

इसलिए, यह छोड़ देता है! (विस्मयादिबोधक चिह्न) आउटपुट से new_file तक। यदि मैं% LINE% का उपयोग करता हूं, तो यह आउटपुट फ़ाइल में "इको चालू है" प्रदर्शित करता है।

कृपया इस समस्या को दूर करने का एक तरीका सुझाएं।

+1

में पाया जा सकता है जब 'गूंज% लाइन%' 'आउटपुट गूंज on' है तो आप एक ब्लॉक में होना चाहिए। आपको अपना कोड थोड़ा और जोड़ना चाहिए – jeb

+1

प्रश्न बहुत भ्रामक है, आप अंतर जानना नहीं चाहते हैं, आप जानना चाहते हैं कि इसे कैसे बचाना है ... –

उत्तर

15

यदि आपने विस्तार सक्षम करने में देरी की है और विस्मयादिबोधक चिह्न आउटपुट करना चाहते हैं, तो आपको इसे से बचने की आवश्यकता है।

प्लेसमेंट के आधार पर विस्मयादिबोधक चिह्नों से बचने के लिए किसी एक, दो या दो कैरेट की आवश्यकता नहीं है।

@echo off 
set test1=Test1! 
setlocal EnableDelayedExpansion 
set test2=Test2^^! 
set "test3=Test3^!" 

echo !test1! 
echo !test2! 
echo !test3! 

ब्लॉकों में !var! और %var% के बीच का अंतर DOS batch: Why are my set commands resulting in nothing getting stored?

में विस्तार से बताया बैच पार्सर की एक व्याख्या How does the Windows Command Interpreter (CMD.EXE) parse scripts?

4

ऐसा लगता है कि आपने कोड में कहीं अधिक SETLOCAL EnableDelayedExpansion कहा है। यह देखने के लिए here पर एक नज़र डालें।

+0

उत्तर के लिए धन्यवाद। हाँ, मैं इसका उपयोग कर रहा हूं मेरी फ़ाइल में संपत्ति क्योंकि यह कोड लूप में है और मैं कुछ भी इस स्ट्रिंग पर ऑपरेटरों को ढूंढ/प्रतिस्थापित कर रहा हूं इसलिए मुझे इसका उपयोग करना होगा। – Vishal

+0

@ यूज़र जिस लिंक को मैंने भेजा है, वह आपको इसके दुष्प्रभावों पर अच्छी व्याख्या देता है। मुझे उम्मीद है कि यह आपके द्वारा देखे जा रहे व्यवहार को समझने में आपकी सहायता करेगा। –

संबंधित मुद्दे