tags:

views:

1559

answers:

6

Is there a way to replace some characters in a text file with a batch file?

I didn't find any command to do that.

A: 

You can search for a command line program like GREP you can call from a batch that will take a replace string and a file and do the swap for you.

Deverill
Grep is used to perform search/filter... even wikipedia knows that : http://en.wikipedia.org/wiki/Grep
enguerran
Indeed, sed is more specific to just that task, but FYI, there are Windows/DOS variants of grep that allow replace as well.
Deverill
A: 

You can use DOS port of Unix command line utility "tr".

A free DOS port can be found here, one of the ones I like (there are many different ones) are "UXUTL — Comprehensive collection of command line Unix utilities for DOS."

The benefit is that you get a WHOLE BUNCh of incredibly useful commands, not just tr.

V_D_R
+1  A: 

you can install unxutils and then do

sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name

to change words or

cat file|tr "a" "b"  > changed.file.name

to change characters

catwalk
+1  A: 

Use sed or nothing:

sed -i 's/FROM/TO/g' filename.txt

sed can be download here, for various platforms.

Andrejs Cainikovs
+4  A: 

The quick answer is "No, not with basic windows utilities"

But as the other answers suggested, there are lots of unix ports out there that do what you want. Take alook at gnuwin32 packages.

EDIT:

Okay, I revise my strict "No". There might be a way of doing it, depending on the complexity of your task and your OS. When using windows 2000 and above, cmd provides command extensions that you can use.

The basic idea is to use a FOR loop to go through each line of an input file and then to use string substitution provided by the SET command to replace your characters.

I have no solution at hand but you might try on your own, using infromation from this quite cool site. Look here for the FOR loop syntax and here for the string substitution.

Frank Bollack
+1 for the gnuwin32.
Andrejs Cainikovs
Joey
Oh, just another thing: `for` skips empty lines. If you need the file to survive including those you have to look for other solutions.
Joey
+1  A: 

You have to use WIN32 SED and see the official gnu sed page for explanation. It is really powerful :

> sed "s/WORD_FROM/WORD_TO/" file_name > changed.file.name
enguerran