El siguiente Script que hice, busca en "file.txt" (Esto tu lo cambias a tu conveniencia) la cadena :
Y edita la linea por la cadena "Leo Gutierrez" (Esto tu lo editas a tu conveniencia).
Ejecución:
Vemos que la coincidencia esta en la línea 39.
Ejecuto el batch:
Vemos como es editado el valor.
Por ultimo, busco en "file.txt" la cadena "Leo Gutierrez", y nos muestra la coincidencia y su linea.
Si quieres evitar que se muestre esto:
Agrega al código:
Para estos casos, valdría la pena echarle un vistazo a PERL.
Saludos.
Código [Seleccionar]
target_area
Y edita la linea por la cadena "Leo Gutierrez" (Esto tu lo editas a tu conveniencia).
Código (dos) [Seleccionar]
@echo off
:: Leo Gutierrez R.
:: Editar la linea con la coincidencia :
:: <set name="target" val="TARGET_AREA"/>
for /f "tokens=1 delims=[]" %%_ in ('type "file.txt" ^| find /i /n "target_area"') do call:edicion %%_
goto:eof
:edicion
:: "Leo Gutierrez" es el valor que pondré.
(
echo %1
echo ^^^<set name="target" val="Leo Gutierrez"/^^^>
echo w
echo e
) | edlin /b file.txt
goto:eof
Ejecución:
Código [Seleccionar]
C:\>type file.txt | find /i /n "target_area"
[39] <set name="target" val="TARGET_AREA"/>
Vemos que la coincidencia esta en la línea 39.
Ejecuto el batch:
Código [Seleccionar]
C:\>este.bat
Final del archivo de entrada
*39
39:* <set name="target" val="TARGET_AREA"/>
39:*<set name="target" val="Leo Gutierrez"/>
*w
*e
Vemos como es editado el valor.
Código [Seleccionar]
C:\>type "file.txt" | find /i /n "Leo Gutierrez"
[39]<set name="target" val="Leo Gutierrez"/>
C:\>
Por ultimo, busco en "file.txt" la cadena "Leo Gutierrez", y nos muestra la coincidencia y su linea.
Si quieres evitar que se muestre esto:
Código [Seleccionar]
Final del archivo de entrada
*39
39:* <set name="target" val="TARGET_AREA"/>
39:*<set name="target" val="Leo Gutierrez"/>
*w
*e
Agrega al código:
Código [Seleccionar]
) | edlin /b file.txt > nul 2>&1
Para estos casos, valdría la pena echarle un vistazo a PERL.
Saludos.