Batch buscar y modificar una palabra de un txt

Iniciado por snpss, 26 Septiembre 2019, 03:42 AM

0 Miembros y 1 Visitante están viendo este tema.

snpss

Hola, quiero buscar y cambiar una palabra de un archivo txt y estoy entranpado. Lo primero que hize es almacenar todo el contenido del archivo txt en una variable de ahi busco la palabra y la reemplazo. Este es mi codigo pero tengo 2 problemas

@echo off
setlocal enabledelayedexpansion

REM [Este es el codigo para guardar el contenido del txt en la variable contenido]
set separador=/
set contenido=
for /f "delims=" %%a in (ejemplo1.txt) do (
  set linea=%%a
  set contenido=!contenido!!linea!
)

REM[vemos lo que contiene la variable]
echo
echo %contenido%
pause>nul

REM[cambiamos, guardamos(en otra variable) y leemos la variable]
echo.
set /p var=ingrese la palabra a buscar:
set /p var2=ingrese la palabra reemplazante:
set sustituir=%contenido:hola=hello%
echo %sustituir%

REM[borrando el archivo]
del ejemplo1.txt
echo archivo borrado
pause>nul

REM[recreamos el archivo con el cambio de palabra]
echo %sustituir% > ejemplo1.txt
echo archivo sustituido
pause>nul

1er problema: por ejemplo tengo el archivo ejemplo1.txt con el contenido "hola mundo". En mi codigo si pongo ( set sustituir=%contenido:hola=hello%)  si hace el cambio de "hola por hello", pero lo que quiero es que, yo ingrese la palabra a buscar y que yo mismo pueda poner la palabra reemplazante.

2do problema: he probado este codigo en texto mas largos(parrafos), al momento de guardar en un nuevo txt, lo guarda en una sola linea no respetando lo saltos de linea :(

Necesito de su sabiduria, muchas gracias.

EdePC

Saludos,

- Usa el estilo !linea:%busca%=%reemplaza%! para evaluar variables dentro de variables.

- Sale todo junto porque lo estás poniendo junto. Puedes directamente enviar la salida a otro .txt mediante Echo que y apone un salto de línea al final.

- A mí me está funcionando lo siguiente:

Código (bash) [Seleccionar]
@Echo Off
SetLocal EnableDelayedExpansion

Set /p busca="Ingrese la palabra a buscar: "
Set /p reemplaza="Ingresa la para reemplazante: "

If Exist ejemplo2.txt Del ejemplo2.txt

For /f "delims=" %%A In (ejemplo1.txt) Do (
  Set linea=%%A
  Echo !linea:%busca%=%reemplaza%!>> ejemplo2.txt
)

Pause



----

- Mmm.. GeSHi me falla con formato DOS  :xD, por eso lo dejo en Bash