समस्याकिसी बैच फ़ाइल में पैरामीटर को कैसे पास किया जाए जिसमें बिना 'ब्रेकिंग' है?
एक मुख्य बैच फ़ाइल में, मान एक .txt फ़ाइल (और SET
इस बैच फ़ाइल में चरों के मान के रूप में) से लिए जाते हैं। इन मानों में प्रत्येक में %
वर्ण हो सकते हैं।
ये किसी भी समस्या के साथ .txt फ़ाइल से पढ़े जाते हैं। हालांकि, जब %
वर्ण वाले मान वाले चर को दूसरी बैच फ़ाइल में पास किया जाता है, तो दूसरी बैच फ़ाइल किसी भी %
अक्षरों को परिवर्तनीय विस्तार के रूप में व्याख्या करती है। (नोट:। वहाँ दूसरा बैच फ़ाइल पर कोई नियंत्रण है)
उदाहरण
echo %PERCENTVARIABLE%
आउटपुट: I%LOVE%PERCENT%CHARACTERS%
जब एक दूसरे फाइल करने के लिए पारित कर दिया और उसके बाद echo'ed , (शायद)IPERCENT
बन गया, क्योंकि यह %LOVE%
और %CHARACTERS%
को अनसेट चर के रूप में व्याख्या करता है।
रिसर्च
मैं, खोजने के लिए और एक बैच फ़ाइल में एक स्ट्रिंग के भीतर तत्वों को बदलने के लिए वाक्य रचना पाया के रूप में मैंने सोचा कि मैं संभावित है ताकि इसे से बचने के लिए में %%
के साथ एक %
चरित्र बदल सकते थे। हालांकि मैं इसे काम नहीं कर सकता।
वाक्य रचना है -
set string=This is my string to work with.
set string=%string:work=play%
echo %string%
कहाँ उत्पादन तो This is my string to play with.
होगा।
प्रश्न
- इसे खोजने का उपयोग कर
%
वर्ण से बचें और एक चर में वाक्य रचना को बदलने के लिए संभव है? (यदि नहीं, तो क्या कोई और तरीका है?) - क्या ऐसा करने की सलाह दी जाती है? (इन बचने वाले वर्णों का उपयोग करके दूसरी बैच फ़ाइल में कोई समस्या हो सकती है (जैसा ऊपर बताया गया है) पर हमारा कोई नियंत्रण नहीं होगा?)
- क्या इस समस्या को संभालने का कोई और तरीका है, यदि उपरोक्त संभव नहीं है?
फ़ाइल को 'jrepl.bat' से dbenham द्वारा संसाधित किया जा सकता है यदि कार्य हेरफेर के लिए उपयुक्त है। jrepl jscript का उपयोग करता है और 'जहर वर्ण' को संभाल सकता है। – foxidrive
@foxidrive क्या आप जानते हैं कि इससे पहले स्क्रिप्ट में परिवर्तनीय मानों का उपयोग कैसे प्रभावित होगा? वेरिएबल्स दोनों की पहली स्क्रिप्ट में उपयोग किया जाएगा (हमारे पास नियंत्रण है) और एक सेकंड (हमारे नियंत्रण में नहीं) – Eilidh
तक "दूसरी फ़ाइल में गुज़रने" के माध्यम से, आप इसका मतलब है 'कॉल' का उपयोग करके इसे कॉल करना? – aschipfl