2010-05-05 16 views
68

हम निम्न आदेशस्ट्रिंग प्रतिस्थापन

set str="jump over the chair" 
set str=%str:chair=table% 

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

set word=table 
set str="jump over the chair" 
?? 

कोई विचार?

+0

संभव डुप्लिकेट स्ट्रिंग] (http://stackoverflow.com/questions/5816178/how-to-replace-string-inside-a-bat-file-with-command-line-parameter-string) जिसमें अधिक अनौपचारिक उत्तर है (इसमें हालांकि यहां के उत्तरों के समान समाधान) – Fr0sT

+1

अब यह महत्वपूर्ण नहीं है कि पहले कौन था, लेकिन समान प्रश्नों को जोड़ने और सबसे अपरिवर्तनीय उत्तर को इंगित करना अच्छा है – Fr0sT

उत्तर

56

आप का उपयोग कर सकते हैं!, लेकिन आपके पास ENABLEDELAYEDEXPANSION स्विच सेट होना चाहिए।

setlocal ENABLEDELAYEDEXPANSION 
set word=table 
set str="jump over the chair" 
set str=%str:chair=!word!% 
57

आप निम्न थोड़ा चाल का उपयोग कर सकते हैं:

set word=table 
set str="jump over the chair" 
call set str=%%str:chair=%word%%% 
echo %str% 

call चर विस्तार की एक और परत है, यह आवश्यक मूल % संकेत उद्धृत करने के लिए कर रही है वहाँ का कारण बनता है लेकिन यह सब अंत में बाहर काम करता है।

+0

मुझे यह समाधान पसंद है, तारों से बचने के लिए बैच फ़ाइलों में हमेशा समस्याग्रस्त है, ENABLEDELAYEDEXPANSION बस चिंता करने के लिए एक और चरित्र जोड़ता है। – Anders

+5

** Joey ** द्वारा प्रदान किए गए उत्तर के बारे में महत्वपूर्ण बात। काम करने के लिए आपको कोड को बैच फ़ाइल में रखना होगा। यदि आप इसे कमांड लाइन में जांचते हैं, तो यह "शब्द %%%" पर अप्रत्याशित '%" कूद जाएगा। बस जागरूक रहें, बैच फ़ाइलों और कमांड लाइन में वह कोड अलग-अलग परिणाम उत्पन्न कर सकता है। – dadhi

+0

दादी की स्पॉट-ऑन टिप्पणी पर बिल्डिंग, कमांड लाइन का समाधान यहां है: https://stackoverflow.com/questions/29944902/how-to-replace-with-percent-character-in-cmd-exe। –

-4

ग:> replace.bat "123def789" "def" "456"


 replace.bat 

setlocal enabledelayedexpansion 
set data=%1 
set search=%2 
set replace=%3 
set "data=!data:%search%=%replace%!" 
echo %data% 
REM Use %data% here before calling endlocal. 
endlocal 
[कैसे कमांड लाइन पैरामीटर के साथ एक बल्ला फ़ाइल के अंदर स्ट्रिंग को बदलने के लिए की
+0

यह क्या करता है? भविष्य के आगंतुक उन कोड को बिल्कुल समझ नहीं सकते हैं। – SteveFest

+0

यहां मैं उल्लेख करना चाहता हूं कि आपको एंडलोकल से पहले परिवर्तनीय डेटा का उपयोग करने की आवश्यकता है। –

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