मैंने एक एप्लिकेशन लॉन्च करने के लिए बैच फ़ाइल लिखी है (एप्लिकेशन मेरा नहीं है, मैं इसे संशोधित नहीं कर सकता)। बैच फ़ाइल स्वयं कुछ मानकों को स्वीकार करती है। एप्लिकेशन अन्य पैरामीटर स्वीकार करता है। बैच फ़ाइल SHIFT का उपयोग करके अपने सभी विकल्पों का उपभोग करती है, फिर एप्लिकेशन को सही वातावरण के साथ लॉन्च करती है और शेष पैरामीटर को एप्लिकेशन में पास करती है। बैच फ़ाइल बुला का उदाहरण:बैच फ़ाइल पैरामीटर में "=" (बराबर) वर्णों को संरक्षित करना
script.bat -opt-1 -opt-2 /opt-a /opt-b=value
उदाहरण में, "-opt -1" और "-opt -2" script.bat द्वारा खपत होती है। अंत में, इसे मूल एप्लिकेशन को "/ opt-a" और "/ opt-b = value" पैरामीटर के साथ कॉल करना होगा। एप्लिकेशन द्वारा पिछले पैरामीटर में "=" साइन की उम्मीद है, मैं इसे बदल नहीं सकता। जब मैं सीधे कमांड लाइन से एप्लिकेशन को कॉल करता हूं तो यह अच्छी तरह से काम करता है।
लेकिन जब मैं इसे स्क्रिप्ट से कॉल करता हूं, तो एप्लिकेशन को "/ opt-b = value" के लिए 2 पैरामीटर प्राप्त होते हैं: दोनों "/ opt-b" और "value"। यदि मैं एप्लिकेशन को कॉल करते समय "% *" का उपयोग करता हूं, तो "=" संकेत संरक्षित होते हैं, लेकिन सभी पैरामीटर पास किए जाते हैं (SHIFT का उपयोग करके छोड़े गए पैरामीटर सहित)।
क्या केवल अंतिम पैरामीटर पास करने और "=" संकेतों को संरक्षित करने का कोई तरीका है?
लिया शायद तुम डॉस के भागने चरित्र इस्तेमाल कर सकते हैं: '^' –
मैं इसे करने की कोशिश की, यह काम नहीं करता। न तो '' उद्धरण या ''उद्धरण। –
शायद आप अपनी स्क्रिप्ट पोस्ट कर सकते हैं ताकि लोग इसे कॉपी और पेस्ट कर सकें, देखें कि क्या गलत है, और एक फिक्स का सुझाव दें। – indiv