Cambiar texto dentro de un TXT con batch

Necesitaría de ser posible un batch que lea un archivo TXT y encuentre palabras dentro del txt, y de encontrarlas que las reemplace por otra y en caso que no las encuentre no haga ningún cambio.

La situación es la siguiente: Necesito cambiar terminologías dentro de archivos txt de subtitulos de documentales para una institución educativa los cuales originalmente son en Español Tradicional y yo necesito reemplazar ciertas terminologías en Español latino -

1 respuesta

Respuesta
1

Esto podría servirte:

@echo off
Setlocal EnableDelayedExpansion
del /q kk_temp.txt
if "%3" == "" goto ayuda
if not exist %3 goto error
set cadorig=%1
set cadorig=%cadorig:"=%
set cadsust=%2
set cadsust=%cadsust:"=%
for /f "tokens=* delims=" %%i in (%3) do (call :cambiar "%%i")
rem copy /y kk_temp.txt %3
goto fin
:cambiar
set ANT=%1
set ANT=%ANT:"=%
set NUE=!ANT:%cadorig%=%cadsust%!
echo %NUE% >> kk_temp.txt
goto :EOF
:error
echo No existe el archivo %3
goto fin
:ayuda
echo Reemplaza una cadena por otra en todo el contenido de un archivo
echo Formato: %0 cadorig cadsust archivo
echo Si las cadenas contienen espacios deben escribirse entrecomilladas
echo No funciona si la cadena original contiene un "=" y no distingue mayusculas
echo Ejemplo:
echo %0 de DE kk.txt
:Fin

Aparte del problema comentado si alguna de las cadenas contiene el "=" y algún otro carácter como "<" o ">", que creo que no te supondrán problema, este bat elimina las líneas en blanco, y esto sí que puede ser un problema en un archivo de subtítulos, sobre todo si es en formato SRT. He comentado la línea que reescribiría el archivo original para que puedas hacer pruebas sin peligro. Tal como está dejará el archivo de salida en kk_temp.txt. Lo pruebas y si crees que podría ser un buen punto de partida me lo dices porque lo de las líneas en blanco se puede arreglar complicando un poco el código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas