Con este batch podemos sustituir una cadena por otra a todos los ficheros que se encuentren dentro de una carpeta.
El código lo encontré en de la web todoexpertos, lo comparto porque me pareció muy útil.
Copiamos el código siguiente y lo metemos dentro de un fichero que yo he llamado sustituye.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @echo off Setlocal EnableDelayedExpansion if "%3" == "" goto ayuda set cadorig=%1 set cadorig=%cadorig:"=% set cadsust=%2 set cadsust=%cadsust:"=% for %%f in (%3) do (call :cambiar %%f) goto fin :cambiar set archivo=%1 for /f "tokens=* delims=" %%i in (%archivo%) do (set ANT=%%i&echo !ANT:%cadorig%=%cadsust%! >>kk_temp.txt) copy /y kk_temp.txt %archivo% del /q kk_temp.txt goto :EOF :Ayuda Echo Reemplaza una cadena por otra en el contenido de archivos (con comodines) echo Utiliza un archivo temporal kk_temp.txt que no debe existir previamente echo Formato: %0 cadorig cadsust archivos echo Si las cadenas contienen espacios deben escribirse entrecomilladas echo No funciona si la cadena original contiene un "=" Echo Ejemplo: echo %0 de DE *.txt :Fin |
Para ejecutarlo, lo llamamos y le pasamos los tres parámetros que necesitamos desde la consola de ms-dos.
Los parámetros son:
1- La cadena a buscar.
2- La cadena que vas a sustituir.
3- La carpeta o archivo en la que quieres que se realice el cambio.
sustituye.bat PALABRA_A_BUSCAR "SUSTITUIR_POR" C:\prueba\*.sql |
En el caso que queramos sustituir un grupo de cadenas, podemos hacerlo mediante un script que irá llamando a nuestro
bat sustituye.bat cambiando los parámetros.
El código sería así:
1 2 3 4 5 6 7 | @echo off echo lanza_sustituye CALL C:\prueba\sustituye.bat PALABRA_A_BUSCAR1 "SUSTITUIR_POR1" C:\prueba\*.sql CALL C:\prueba\sustituye.bat PALABRA_A_BUSCAR2 "SUSTITUIR_POR2" C:\prueba\*.sql CALL C:\prueba\sustituye.bat PALABRA_A_BUSCAR3 "SUSTITUIR_POR3" C:\prueba\*.sql .... .... |
El fichero lo he llamado lanza.bat y tal y como está sustituiria una cadena por otra en todos los archivos .sql que se encuentren dentro de la carpeta prueba.