batch file - Windows: How to use "set" with dynamic search and replace? -


मैं गतिशील फैशन में SET कमांड की खोज / प्रतिस्थापन सुविधा का उपयोग करना चाहता हूं। < / P>

सामान्य तरीका ऐसा होगा

  SET blah = double-foo SET blah =% blah: foo = bar%   

अब मैं foo के बजाय दूसरी पंक्ति में चर का उपयोग करना चाहता हूं और बार :

  SET search = foo SET repl = bar SET blah = डबल-फ़ू ईसीओएचओ% ब्लाः% एसईटी ब्लाः =% ब्लाः% सर्च% =% आरपी %% ईसीएचओ% ब्लाः%   

मुझे केवल <प्री> डबल मैंने भी कोशिश की

  SET blah =% blah: (% खोज% =% आरपी%)% SET blah =% blah: -foo searchrepl%   

(% खोज%) = (% repl%)%

मैं इसे कैसे प्राप्त करूं? अगर मैं इसे SET के बिना करता हूं तो ठीक है। अंत में मैं डबल-बार धारण करने के लिए पर्यावरण चर चाहते हैं।

  SET search = foo SET repl = बार SET blah = double-foo कॉल करें  

कॉल के द्वारा दोहरे विस्तार का उपयोग करें। पहले "स्कैन" में यह कॉल सेट ब्लाः =% blah: foo = bar% के लिए विस्तारित होता है SET blah = %% blah:% search% =% repl %%%

और कॉल में वांछित परिणाम के लिए सेकेंड समय का विस्तार होता है।

दूसरा तरीका विलंबित संस्करण है

  SETLOCAL EnableDelayedExpansion SET search = foo SET repl = bar SET blah = डबल-फू SET blah =! Blah:% search% =% repl%!   

यह काम करता है, क्योंकि प्रतिशत विस्तार के बाद विलंबित विस्तार का निष्पादन होता है।

मैं विलम्बित संस्करण को पसंद करता हूं, क्योंकि यह विशेष वर्णों के खिलाफ तेज़ और सुरक्षित है।

एक असामान्य तरीके से लूप-वेरिएबल संस्करण है, यह विशेष वर्णों के साथ भी कार्य करता है वेरिएबल्स खोजें / प्रतिस्थापित करें।

  SETLOCAL EnableDelayedExpansion SET "search = foo & gt;" SET "repl = बार और बार" SET "blah = double-foo & gt; & amp;; & lt; & gt;" %% के लिए ("! खोज!") के लिए ("! Repl!" के लिए (%!) के लिए (SET "blah =! Blah: %% ~ s = %% ~ r!"))    

Comments