[BATCH]Ayuda Base de Datos

Iniciado por Geormarsch, 29 Octubre 2011, 03:43 AM

0 Miembros y 1 Visitante están viendo este tema.

Geormarsch

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 (dos) [Seleccionar]
@echo off
:menu
cls
echo 1.- Agregar Cliente
echo 2.- Buscar dentro de la BD
set /p o=Elija una opcion :
if not defined o goto menu
if %o%==1 (goto add)
if %o%==2 (goto b) else (goto menu)

:add
set /p name= Nombre de cliente :
set /p dire=Direccion :
set /p n= Numero:
set /p c= Compras Recientes :
set /p t= Talla :
set /p s= Sexo:
echo %name%>>%windir%\clientes.txt
echo %dire%>>%windir%\clientes.txt
echo %n%>>%windir%\clientes.txt
echo %c%>>%windir%\clientes.txt
echo %t%>>%windir%\clientes.txt
echo %s%>>%windir%\clientes.txt
echo Generado Correctamente
pause
goto menu

:b
cls
set /p bo= Que desea buscar dentro de la DB :
rem ahora no se como hacerlo para buscar y almacenar dentro de una variable
rem agamos que busco talla : 46
if %variable%==%bo% (goto find) else (goto not)

:find
cls
echo Se encontro el resultado final
pause
goto menu

:not
cls
echo No encontrado
pause
goto menu
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

leogtz

Código (bash) [Seleccionar]
type "clientes.txt" | findstr "^cliente"
Código (bash) [Seleccionar]
type "clientes.txt" | find "clientes"
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Geormarsch

Cita de: Leo Gutiérrez. en 29 Octubre 2011, 06:47 AM
Código (bash) [Seleccionar]
type "clientes.txt" | findstr "^cliente"
Código (bash) [Seleccionar]
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???
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

leogtz

^ 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 (bash) [Seleccionar]
setlocal enabledelayedexpansion
for /f "tokens=*" %%_ in ('type "clientes.txt" ^| findstr "^cliente"') do (
   set "valor=%%_"
   echo El valor es : !valor!
)

   
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FranciskoAsdf

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


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
Asdf debería ser algún tipo de función.

Geormarsch

Muchas Gracias Amigos Tema Solucionado....
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"