मुझे यकीन है कि यह ठीक काम कर रहा है। इसे साबित करने के लिए, मान को परिभाषित करने के बाद SET STR
जोड़ें, और आपको सही मान दिखाई देगा।
जब आप मान को प्रतिबिंबित करने का प्रयास करते हैं तो समस्या तब होती है जब निष्पादित करने वाली रेखा बन जाती है: echo >abcd_
। >
उद्धृत किया गया है या नहीं बच गए, तो यह बस कोई तर्क के साथ ECHO के ouput ले रहे हैं और "abcd_"
नाम की एक फ़ाइल के लिए यह रीडायरेक्ट हो रहा है आप उद्धरण देखते हुए, फिर कोई आपत्ति नहीं है echo "%str%"
को अपनी लाइन बदल सकते हैं और यह काम करेगा।
अन्य विकल्प को सक्षम और विलंबित विस्तार उपयोग करने के लिए है (मैं यह सोचते हैं रहा हूँ यह एक बैच स्क्रिप्ट कोड है, और कमांड लाइन पर क्रियान्वित नहीं) जल्दी पर
setlocal enableDelayedExpansion
set soeid=abcd
set "val1=>"
set "val2=_"
set "str=%val1%%soeid%%val2%"
echo !str!
सामान्य %var%
विस्तार होता है, जबकि दुभाषिया लाइन पार्स कर रहा है। देरी !var!
विस्तार समाप्त होने से ठीक पहले अंत में होता है। बीच में कहीं भी पुनर्निर्देशन का पता लगाया जाता है। यही कारण है कि सामान्य विस्तार काम नहीं करता है - दुभाषिया विस्तारित >
चरित्र को देखता है और इसे आउटपुट रीडायरेक्शन ऑपरेटर के रूप में व्याख्या करता है। देरी से विस्तार दुभाषिया से >
चरित्र छुपाता है जब तक कि पुनर्निर्देशन का विश्लेषण नहीं किया जाता है।
देरी विस्तार के बारे में अधिक जानकारी के लिए, कमांड लाइन से SET /?
टाइप करें और "अंत में, देरी वाले पर्यावरण परिवर्तनीय विस्तार के लिए समर्थन" के साथ शुरू होने वाले पैराग्राफ से शुरू करें।
"काम नहीं करता" के बाद आपको सबसे पहले टाइप करना चाहिए * यह * कैसे काम नहीं करता है इसका एक स्पष्टीकरण है। हम आपके दिमाग को नहीं पढ़ सकते हैं या यहां से आपकी स्क्रीन नहीं देख सकते हैं; हमें बस इतना करना है कि आप हमें अपने प्रश्न में क्या कहते हैं। अगर आप मदद चाहते हैं, तो आपको हमें यह बताना होगा कि आप क्या समस्या कर रहे हैं, और आपने जो भी प्रयास किया वह काम नहीं करता है। –