Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Geormarsch en 29 Octubre 2011, 03:43 am



Título: [BATCH]Ayuda Base de Datos
Publicado por: Geormarsch en 29 Octubre 2011, 03:43 am
Hola Amigos hoy tengo una duda...
Tengo una base de datos Llamada clientes.txt
En Clientes tengo lo siguiente
------------------------------------
cliente:Perico Los palotes        -
direccion:Angeles 14              -
numero: 1234567                  -
comprasRecientes: Pantalon   -
talla :  46                              -
sexo : M                               -
------------------------------------

Esa es mi base de datos...
ahora de esa base de datos yo quiero obtener solo la linea de que dice 'Cliente'
(Es la primera) Pero si yo quiero buscar una palabre clave dentro de mi BD como lo ago?

Código
  1. @echo off
  2. :menu
  3. cls
  4. echo 1.- Agregar Cliente
  5. echo 2.- Buscar dentro de la BD
  6. set /p o=Elija una opcion :
  7. if %o%==1 (goto add)
  8. if %o%==2 (goto b) else (goto menu)
  9.  
  10. :add
  11. set /p name= Nombre de cliente :
  12. set /p dire=Direccion :
  13. set /p n= Numero:
  14. set /p c= Compras Recientes :
  15. set /p t= Talla :
  16. set /p s= Sexo:
  17. echo %name%>>%windir%\clientes.txt
  18. echo %dire%>>%windir%\clientes.txt
  19. echo %n%>>%windir%\clientes.txt
  20. echo %c%>>%windir%\clientes.txt
  21. echo %t%>>%windir%\clientes.txt
  22. echo %s%>>%windir%\clientes.txt
  23. echo Generado Correctamente
  24. goto menu
  25.  
  26. :b
  27. cls
  28. set /p bo= Que desea buscar dentro de la DB :
  29. rem ahora no se como hacerlo para buscar y almacenar dentro de una variable
  30. rem agamos que busco talla : 46
  31. if %variable%==%bo% (goto find) else (goto not)
  32.  
  33. :find
  34. cls
  35. echo Se encontro el resultado final
  36. goto menu
  37.  
  38. cls
  39. echo No encontrado
  40. goto menu


Título: Re: [BATCH]Ayuda Base de Datos
Publicado por: leogtz en 29 Octubre 2011, 06:47 am
Código
  1. type "clientes.txt" | findstr "^cliente"
Código
  1. type "clientes.txt" | find "clientes"


Título: Re: [BATCH]Ayuda Base de Datos
Publicado por: Geormarsch en 29 Octubre 2011, 16:48 pm
Código
  1. type "clientes.txt" | findstr "^cliente"
Código
  1. type "clientes.txt" | find "clientes"

Me Podrias explicar el primer code por que lleva ^ ?
Otra Cosa Leo Como lo ago para Almacenar lo encontrado en una variable???


Título: Re: [BATCH]Ayuda Base de Datos
Publicado por: leogtz en 30 Octubre 2011, 00:55 am
^ representa el inicio de cadena.

Como queremos checar la cadena que empiece por clientes, añadimos ^ antes de la palabra "clientes."

Para la segunda duda (No probado).

Código
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%_ in ('type "clientes.txt" ^| findstr "^cliente"') do (
  3.    set "valor=%%_"
  4.    echo El valor es : !valor!
  5. )
   
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular


Título: Re: [BATCH]Ayuda Base de Datos
Publicado por: FranciskoAsdf en 30 Octubre 2011, 02:38 am
Lo mejor que puedes hacer para trabajar con "bases de datos" planas, es trabajarlas con puntos y comas ( ; ) como separadores, como los archivos.csv

Por ejemplo

Código:
cliente;direccion;numero;compra:talla
perico;su casa;14;pantalon;25



Y los puedes identificar por ejemplo añadiendo un correlativo al principio o algo así, para que el programa no se confunda cuando hayan clientes con el mismo nombre. o cuando se repita algun dato, porque mas de alguna vez te puede pasar, y batch solo buscara hasta la primera coincidencia.


Eso saludos :D


Título: Re: [BATCH]Ayuda Base de Datos
Publicado por: Geormarsch en 4 Noviembre 2011, 20:40 pm
Muchas Gracias Amigos Tema Solucionado....