The best solution is to download and install Cygwin or GNUWin32 , but if you are really limited by the standard shell, it might get a little confused.
This is not the fastest method in the world, but it is at least functional. This batch file processes each line one character at a time, especially considering the case when you find the line you are looking for.
@echo off set init=50M set max=75M setlocal enableextensions enabledelayedexpansion for /f "tokens=* delims=" %%a in (agility.jnlp) do ( set str1=%%a call :morph echo !str2!>>agility_new.jnlp echo !str2! ) endlocal goto :eof :morph set str2= :morph1 if not "x!str1!"=="x" ( if "!str1:~0,18!"=="initial-heap-size=" ( set str2=!str2!initial-heap-size="!init!" set str1=!str1:~24! goto :morph1 ) if "!str1:~0,14!"=="max-heap-size=" ( set str2=!str2!max-heap-size="!max!" set str1=!str1:~20! goto :morph1 ) set str2=!str2!!str1:~0,1! set str1=!str1:~1! goto :morph1 ) goto :eof
With input file:
<j2se version="1.5" initial-heap-size="100M" max-heap-size="100M"/> next line ===
in the end it will turn out:
<j2se version="1.5" initial-heap-size="50M" max-heap-size="75M"/> next line ===
source share