2011-03-29 18 views
12

तो मैं एक स्क्रिप्ट बनाना चाहता हूं जिसमें 3 तर्क होते हैं: फ़ाइल का पथ, प्रतिस्थापित करने के लिए सटीक शब्द, और इसे बदलने के साथ। ऐसी चीज कैसे बनाएं?बल्ले फ़ाइल स्क्रिप्ट का उपयोग कर पाठ फ़ाइल में पाठ को कैसे प्रतिस्थापित करें?

script.bat "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use" 

उत्तर

6

मैंने अपने जीवन में 2 बैच स्क्रिप्ट की तरह कुछ लिखा है, लेकिन यहां कमांड लाइन से इनपुट कैसे लें:

script.bat filepath find replace 
%1 = filepath, %2 = find, %3 = replace 

प्रतिस्थापन करने के लिए, की तरह कुछ कार्य करें: (। लिंक @russ द्वारा पोस्ट की गई, चर संख्या के साथ से सीधे लिया बदला)

for /f "tokens=1,* delims=]" %%A in ('"type %1|find /n /v """') do (
set "line=%%B" 
if defined line (
    call set "line=echo.%%line:%~2=%~3%%" 
    for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X 
    ) ELSE echo. 
) 

मुझे लगता है कि यह आपके लिए काम करना चाहिए।

8

fnr उपयोगिता अन्य प्रसिद्ध उपयोगिता से बेहतर है क्योंकि यह नियमित अभिव्यक्तियों के आधार पर खोज और प्रतिस्थापित कर सकती है। यूआई प्रेमी के लिए आप यूआई में विकल्पों को कॉन्फ़िगर कर सकते हैं और यह कमांड लाइन स्ट्रिंग जेनरेट कर सकता है जिसे तब आपकी स्क्रिप्ट में उपयोग किया जा सकता है। कमांड लाइन stirng के रूप में भी उपयोग करने के लिए बहुत आसान है।

यहाँ http://findandreplace.codeplex.com/

खोजें इसके अलावा यह किसी भी dependicies बिना एकल exe, उपयोग करने के लिए इतना आसान है।

उदाहरण:

fnr --cl --dir "" --fileMask "hibernate.*" --useRegEx 
     --find "find_str_expression" --replace "replace_string" 
+0

बयान "यह किसी भी निर्भरता के बिना एक भी exe है" गलत है। एफएनआर एक .NET अनुप्रयोग है और इसलिए क्लाइंट मशीन पर कम से कम एक विशिष्ट .NET संस्करण की आवश्यकता है। स्रोत: http://findandreplace.codeplex.com/SourceControl/latest –

+0

एक खाली - डीआईआर पैरामीटर वर्तमान (1.7) संस्करण द्वारा स्वीकार नहीं किया जाता है। वर्तमान कार्य निर्देशिका देना हालांकि काम करेगा: --dir% सीडी% –

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