2012-08-09 13 views
7

चर का उपयोग होने पर मुझे इस बैच फ़ाइल को प्रतिस्थापन प्रतिस्थापन करने में परेशानी हो रही है। विशेष रूप से जब मूल! चर निर्दिष्ट है; यदि यह एक शाब्दिक स्ट्रिंग है तो यह ठीक काम करता है। हालांकि, यह मेरे उपयोग के लिए नहीं करेगा।वैरिएबल का उपयोग कर बैच फ़ाइल सबस्ट्रिंग प्रतिस्थापन

setlocal ENABLEDELAYEDEXPANSION 
set original=chair 
set replacement=table 
set str="jump over the chair" 
set str=%str:!original!=!replacement!% 

आपकी सहायता की बहुत सराहना की जाती है।

उत्तर

3

आपको अपना विस्तार आदेश उलट दिया गया है।

सामान्य (प्रतिशत) विस्तार पार्स समय (1) पर होता है
देरी से है (विस्मयादिबोधक) विस्तार रन टाइम (2)

खोज और शब्दों की जगह पर होता है खोज से पहले का विस्तार किया जाना चाहिए और की जगह जगह ले जा सकते हैं । तो अगर आप चाहते हैं:

set str=!str:%original%=%replacement%! 
+0

धन्यवाद पार्स हो जाता है, हो सकता है कि मेरी एक अतिरिक्त समस्या हो। मुझे लगता है कि मेरी समस्या यह समझने की कमी थी कि बैफ फ़ाइलों में IF कथन कैसे काम करते हैं। मैंने इसे अपने आईएफ स्टेटमेंट के तीसरे खंड में रखा था और मेरा मानना ​​है कि यही कारण है कि मेरे पास केवल एक चर का मूल्यांकन किया गया था। इस लिंक ने मेरी मदद की: http://stackoverflow.com/questions/4367297/how-to-substitute-variable-contents-in-dos – delpium

12

आप का उपयोग करते हैं call आप इस आवश्यकता के बिना setlocal enabledelayedexpansion के लिए बहुत की तरह कर सकते हैं,:

call set str=%%str:%original%=%replacement%%%

नोट: यह पहली करने के लिए call set str=%str:chair=table%

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