Título: Batch buscar y modificar una palabra de un txt Publicado por: snpss en 26 Septiembre 2019, 03:42 am 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. Título: Re: Batch buscar y modificar una palabra de un txt Publicado por: EdePC en 26 Septiembre 2019, 05:07 am 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
---- - Mmm.. GeSHi me falla con formato DOS :xD, por eso lo dejo en Bash |