Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Formatear texto de un fichero con un Script Batch

29 abril, 2013

Con este Script en lenguaje Batch recuperamos los datos que se encuentran en el fichero archivo.sql (son INSERTS en la base de datos), y lo separamos en dos partes, cada parte en una línea diferente. Usamos el delimitador que se encuentra en el insert “;” para saltar de linea y escribir el texto restante en la siguiente linea. Al final de la lectura de todo el archivo.sql añadimos un “commit;”, que necesitabamos para completar los inserts.

El script creará el fichero formateado.sql que tendrá el formato que necesitamos para realizar nuestros inserts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@echo off
::Elimina el archivo formateado.sql en caso de que exista
del formateado.sql.txt
CLS
set /a contador=0
set /a porcentaje=0
set /a total=0
 
::Primera cabecera
ECHO Preparando archivo...
 
::Recorre el fichero SQL llamando a countSQL para cada linea ignorando la cabecera del archivo
for /f "skip=1 tokens=1-2 delims=;" %%a in (archivo.sql) do call :countSQL "%%a" "%%b"
 
::Recorre el fichero SQL llamando a Formatear para cada linea ignorando la cabecera
for /f "skip=1 tokens=1-2 delims=;" %%a in (archivo.sql) do call :Formatear "%%a" "%%b"
::Saltamos al final 'Done' e incluimos el commit que necesitamos
GOTO Done
 
::Funcion que maqueta y guarda el insert
:Formatear
call:incrContador
ECHO %~1)>>formateado.sql
echo ;>>formateado.sql
set /a porcentaje=(%contador%*100)/%total%
cls
ECHO Creando... %porcentaje%%%
GOTO EOF
 
::Funcion que incrementa
:incrContador
set /a contador+=1
GOTO EOF
 
::Funcion que cuenta para %
:countSQL
set /a total=%total%+1
GOTO EOF
 
::Al terminar añade un commit
:Done
ECHO commit>>formateado.sql
Echo ;>>formateado.sql
PAUSE
:EOF