Cómo puedo reemplazar "|" con un. Bat en varios ficheros txt

Tengo varios ficheros y quiero reemplazar en ellos dos cosas, un literal "Tele" por "movil" Y el carácter especial pipe | que es realmente el problemático. Si alguien me puede ayudar

1 Respuesta

Respuesta
1

Prueba con esto:

@echo off
Setlocal EnableDelayedExpansion
del /q kkk.txt
for /f "tokens=*" %%a in (pba.txt) do (
set linea=%%a
set linea=!linea:Tele=movil!
set linea=!linea:^|=,!
Echo ! Linea!>> kkk.txt
)

Donde he puesto pba.txt pon el nombre de alguno de los archivos y comprueba que en kkk.txt tienes el archivo modificado. Esta forma de trabajar eliminaría las líneas en blanco. Si eso fuera un problema dímelo y veremos si hay forma de arreglarlo.

Perdón, se me olvidó aclarar que en ese ejemplo el carácter "|" ("pipe") se sustituye por una coma (además de sustituir "Tele" por "movil")

Muchas gracias gggirad, pero sería posible hacerlo en todos los ficheros *.txt de la carpeta no uno por uno?

A ver si con esto lo consigues:

@echo off
Setlocal EnableDelayedExpansion
for /f "tokens=*" %%x in ('dir /b *.txt') do call :revisar "%%x"
goto :eof
:revisar
del /q kkk.txt
for /f "tokens=*" %%a in (%~1) do (
set linea=%%a
set linea=!linea:Tele=movil!
set linea=!linea:^|=,!
echo !linea!>> kkk.txt
)
copy /y kkk.txt %1
goto :eof

Haz la prueba en un entorno "controlado" porque ahora el "copy /y" te va a reescribir el archivo original y si no quieres perderlo deberías hacerte una copia de los archivos originales antes de ejecutar el bat. Una vez que compruebes que funciona como quieres ya puedes relajar las precauciones. Ya me contarás.

Hola gggirald, lo primero muchas gracias funciona bien, lo único que deja un fichero kkk.txt con la información de uno de los ficheros, creo que con un del kkk.txt se soluciona.

Claro. Puedes poner un "del /q kkk.txt" después del "copy /y kkk.txt %1".

Si ya está resuelta tu pregunta, ciérrala si te parece.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas