windowscommand-linescriptingbatch-filetext-files

How can you find and replace text in a file using the Windows command-line environment?


I am writing a batch file script using Windows command-line environment and want to change each occurrence of some text in a file (ex. "FOO") with another (ex. "BAR"). What is the simplest way to do that? Any built in functions?


Solution

  • A lot of the answers here helped point me in the right direction, however none were suitable for me, so I am posting my solution.

    I have Windows 7, which comes with PowerShell built-in. Here is the script I used to find/replace all instances of text in a file:

    powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"
    

    To explain it:

    Powershell.exe should be part of your PATH statement already, but if not you can add it. The location of it on my machine is C:\WINDOWS\system32\WindowsPowerShell\v1.0

    Update
    Apparently modern windows systems have PowerShell built in allowing you to access this directly using

    (Get-Content myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt