12

So I want to create a script that takes 3 arguments: path to file, exact word to replace, and with what to replace it. How to create such thing?

Generally I want it to have an API like this:

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

3 Answers 3

7

I have written something like 2 batch scripts in my life, but here's how to take input from the command line:

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

To do replacement, do something like:

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.
)

(taken directly from the link posted by @russ, with the variable numbers changed.)

I think this should work for you.

Sign up to request clarification or add additional context in comments.

Comments

7

Use fnr utility its better than other famous utility since it can search and replace based on regular expressions. Also for the UI lovers you can configure options in UI and it can generate command line string which can then be used in your script. Very easy to use even as command line stirng.

Find it here http://findandreplace.codeplex.com/

Also it is single exe without any dependicies, so easy to use.

Example:

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

2 Comments

The statement "it is a single exe without any dependencies" is false. FNR is a .NET application and therefore requires at least a specific .NET version on the client machine. Source: findandreplace.codeplex.com/SourceControl/latest
An empty --dir parameter is not be accepted by the current (1.7) version. Giving the current work directory will do the job though: --dir %CD%
3

A quick google search found this:

http://www.dostips.com/?t=Batch.FindAndReplace

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.