Nuevas NORMAS para el foro
Bienvenido(a),
Visitante
. Favor de
ingresar
o
registrarse
.
¿Perdiste tu
email de activación?
- Agosto 21, 2008, 07:56:25
Boton Buscar
Visita:
Articulos
-
Juegos Gratis
-
Da Foros
Comunidad Underground Hispana
|
Programacion
|
Programación
|
Batch
(Moderadores:
Espectro Infernal
,
The Shadow
) | Tema:
busqueda en archivo .txt
0 Usuarios y 1 Visitante están viendo este tema.
« anterior
próximo »
Páginas:
[
1
]
Autor
Tema: busqueda en archivo .txt (Leído 226 veces)
El92rozn
Miembro
Desconectado
Mensajes: 135
busqueda en archivo .txt
«
en:
Julio 02, 2008, 07:59:50 »
Muy wenas a todos!
ufff hacia mucho que no me pasaba por el foro,( ya veo pocos conocidos por aquí jeje), pero la verdad es que me he topado con un problemilla en un programa y me gustaría que me echaseis una manita!
a ver, tengo un archivo de texto (x.txt) en el que esta escrito algo así:
---------------------------------------------------------
fecha hora
------------------
nombre: xxxxx
direccion: yyyy
tlf : zzzz
observaciones: hhhh
------------------
seccion: nnnn
---------------------------------------------------------
---------------------------------------------------------
fecha hora
------------------
nombre: aaaa
direccion: bbbb
tlf : cccc
observaciones: dddd
------------------
seccion: eeee
---------------------------------------------------------
etc...
como veis es un archivo de almacenamiento de datos.
Bueno lo que me gustaría que me ayudaseis es a sacar un programa que mediante la introducción del dato "nombre=aaaa" por ejemplo, y con ayuda del FOR, consiguiese sacar la ficha completa de ese nombre.
yo lo he estado intentando y la verdad es que de momento no he conseguido mas que sacar la linea completa de nombre...con este comando:
FOR /F "tokens=1 delims=" %%a IN ('FIND /I "xxxx" c:\c.txt') do echo %%a
Espero que podais ayudarme con este reto!
Muchas gracias y saludos a todos!!
el92rozn
«
Última modificación: Julio 02, 2008, 08:55:19 por El92rozn
»
En línea
The Shadow
Moderadores
Colaborador
Desconectado
Mensajes: 801
Fucking mnemonic c0d1n6!
Re: busqueda en archivo .txt
«
Respuesta #1 en:
Julio 02, 2008, 06:57:51 »
Weno amigo . . . en mi opinion personal . . . en el uso de bases de datos en batch . . . tienes que marcar cada entrada de la base de datos para luego manejarla . . . es decir . . tu base de datos tiene que ser como esta (por ejemplo):
------------------------fichero=bd.txt
Citar
xxxxx[---------------------------------------------------------
xxxxx[fecha hora
xxxxx[------------------
xxxxx[nombre: xxxxx
xxxxx[direccion: yyyy
xxxxx[tlf : zzzz
xxxxx[observaciones: hhhh
xxxxx[------------------
xxxxx[seccion: nnnn
xxxxx[---------------------------------------------------------
aaaa[---------------------------------------------------------
aaaa[fecha hora
aaaa[------------------
aaaa[nombre: aaaa
aaaa[direccion: bbbb
aaaa[tlf : cccc
aaaa[observaciones: dddd
aaaa[------------------
aaaa[seccion: eeee
aaaa[---------------------------------------------------------
etc...
------------------------fichero=bd.txt
esto es para marcar todo lo referente al nombre aaaa, para su posterior uso . . .
el programita seria:
...
Código:
set /p name=Nombre?
find /I "%name%["<bd.txt
...
O bien si lo quieres mas "bonito" seria algo como:
...
Código:
set /p name=Nombre?
set g=%name%_
FOR /F "tokens=* delims=," %%a IN ('find /I "%g%" bd.txt') do call :st %%a
pause&& exit
:st
set a=%1
echo set b=%%a:%g%=%%>$.cmd
call $.cmd
set b=%b:_= %
echo %b%&& goto :EOF
...
cabe destacar que de esta forma, la base de datos no podra tener caracteres restringidos ya que al pasarlos por el for, no coge todo lo que deberia ser . . . asi que el fichero de la bd deberia ser algo como:
Citar
xxxxx_---------------------------------------------------------
xxxxx_fecha__hora
xxxxx_------------------
xxxxx_nombre:_xxxxx
xxxxx_direccion:_yyyy
xxxxx_tlf_:_zzzz
xxxxx_observaciones:_hhhh
xxxxx_------------------
xxxxx_seccion:_nnnn
xxxxx_---------------------------------------------------------
aaaa_---------------------------------------------------------
aaaa_fecha__hora
aaaa_------------------
aaaa_nombre:_aaaa
aaaa_direccion:_bbbb
aaaa_tlf_:_cccc
aaaa_observaciones:_dddd
aaaa_------------------
aaaa_seccion:_eeee
aaaa_---------------------------------------------------------
y devolvera algo asi:
Citar
---------------------------------------------------------
fecha hora
------------------
nombre: aaaa
direccion: bbbb
tlf : cccc
observaciones: dddd
------------------
seccion: eeee
---------------------------------------------------------
Saludos!
En línea
Reglamento del Foro
Linux Registered User #473016
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #2 en:
Julio 03, 2008, 02:26:43 »
Menuda respuesta Shadow! muchísimas gracias por tu rapidez y eficacia!!! la verdad es que me gustaría que me explicases un poco ese segundo código que me has dejado, al menos la parte después del For, que es donde me pierdo.
Código:
set /p name=Nombre?
set g=%name%_
FOR /F "tokens=* delims=," %%a IN ('find /I "%g%" bd.txt') do call :st %%a
pause&& exit
:st
set a=%1
echo set b=%%a:%g%=%%>$.cmd
call $.cmd
set b=%b:_= %
echo %b%&& goto :EOF
Muchísimas gracias por la ayuda y un saludito!!
el92rozn
En línea
The Shadow
Moderadores
Colaborador
Desconectado
Mensajes: 801
Fucking mnemonic c0d1n6!
Re: busqueda en archivo .txt
«
Respuesta #3 en:
Julio 03, 2008, 09:58:17 »
Citar
FOR /F "tokens=* delims=," %%a IN ('find /I "%g%" bd.txt') do call :st %%a
el comando
Citar
find /I "%g%" bd.txt
, buscara todas las lineas que contengan la cadena
Citar
"%g%"
del archivo
Citar
bd.txt
; todas esas lineas seran analizadas con el
Citar
FOR
, el cual, cada linea la mandara a la funcion
Citar
:st
con el comando
Citar
call :st %%a
. La funcion
Citar
:st
se encargara de arreglar las lineas que le dan y mostrarlas...
Y no hay de que! . . . para eso estamos!
Saludos!
En línea
Reglamento del Foro
Linux Registered User #473016
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #4 en:
Julio 04, 2008, 03:25:36 »
muy bien, y muchísimas gracias! Ya lo estoy utilizando y funciona de maravilla!
un saludo!!
el92rozn
En línea
wizard_0
Miembro
Desconectado
Mensajes: 116
Re: busqueda en archivo .txt
«
Respuesta #5 en:
Julio 04, 2008, 09:55:41 »
Weno yo lo hice mas simple... segun el nombre q digitase.. o podria hacerse tambien por seccion como esta en tu database.
base.txt
Código:
---------------------------------------------------------
fecha hora
------------------
nombre: pedro
direccion: yyyy
tlf : zzzz
observaciones: hhhh
------------------
seccion: nnnn
---------------------------------------------------------
---------------------------------------------------------
fecha hora
------------------
nombre: martha
direccion: bbbb
tlf : cccc
observaciones: dddd
------------------
seccion: eeee
---------------------------------------------------------
Código:
@echo off
Title BASE DE DATOS
set c=0
:inicio
cls
set /p n=Nombre :
type base.txt | find /I "%n%" && call:si
if %errorlevel% GTR 0 (call:info "El nombre: %n% ,no figura en la base de datos" " Por favor verifique el nombre" 16 "** ERROR!! **" )
pause
goto inicio
:si
cls
setlocal enabledelayedexpansion
for /f "tokens=1-2* delims=:" %%a in (base.txt) do (
if /I "%%b" EQU " !n!" (set c=1)
if !c! GTR 0 (
set /a c+=1
echo %%a:%%b
)
if !c! GTR 4 (set c=0)
)
goto:EOF
:info
echo wzr=%1 ^& Chr(13) ^& %2 >%temp%\winfo.vbs
echo msgbox wzr,%3,%4 >>%temp%\winfo.vbs
start %temp%\winfo.vbs
ping 127.0.0.1 -n 2 >nul
del %temp%\winfo.vbs >nul
goto:EOF
Si le pones mArtHa t d vuelve algo asi...
Código:
nombre: martha
direccion: bbbb
tlf : cccc
observaciones: dddd
aunke si kieres mas lineas de tu base q aparescan solo modificas el if en el FOR..
salu2-->
En línea
↑__P®egun†a__b!na®¡a__↑
3reS_un__[1]__ø__[0]__?¿?¿
ø__vives__ø__mueres
Si__estas__v1vø_!!!__ganate__el__ saludo_!!!
"
http://miarroba.com/foros/ver.php?id=1215889
"
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #6 en:
Julio 05, 2008, 08:48:31 »
ola wenas, que tal todo?
weno he leído y estudiado a fondo tu respuesta wizard pero me resulta demasiado avanzada también para mis conocimientos de este lenguaje...me gustaría que me explicases un poquillo como funciona ya que quisiera comprenderlo del todo!
Otra cosilla que os quería preguntar...bien imaginemos que tenemos diferentes archivos (que llamaremos bd.txt ) en diferentes carpetas (que llevaran el nombre de la sección a la que pertenecen, como por ejemplo, "cines" o "restaurantes"). En cada carpeta de sección existe un bd.txt en el que se disponen todos los datos.
weno la pregunta es, como se podría hacer una búsqueda en toda la base de datos? es decir, como encontrar por ejemplo un nombre en todas las bd.txt de todas las secciones??
yo he pensado en realizar una copia de cada bd.txt de cada sección en un txt (que llamaría por ejemplo bdgeneral.txt) donde después se realizaría la búsqueda pero no se muy bien como hacerlo
espero haberme explicado correctamente y que me podáis ayudar porque la verdad es que estoy un poco perdido...!
Un saludo y gracias
El92rozn
«
Última modificación: Julio 05, 2008, 11:06:38 por El92rozn
»
En línea
wizard_0
Miembro
Desconectado
Mensajes: 116
Re: busqueda en archivo .txt
«
Respuesta #7 en:
Julio 05, 2008, 07:17:09 »
Con el for podes agarrar mas de un archivo... si lo deseas.... podes comensar con uno y seguir hasta terminar...
ejemplo:
Código:
For /f %%a in (db1.txt db2.txt db3.txt dbgeneral.txt) do (echo has lo tuyo)
weno weno trabajarias uno por uno
y esta linea t dice si exist el nombre en todo el archivo...
type base.txt | find /I "%n%" && call:si --> Ssi se encuentra el nombre llamas a la etiketa "si"
Me gustaria q me digas q partes del code.. no entendes.. por q no creo q sea todo noO?
salu2-->
En línea
↑__P®egun†a__b!na®¡a__↑
3reS_un__[1]__ø__[0]__?¿?¿
ø__vives__ø__mueres
Si__estas__v1vø_!!!__ganate__el__ saludo_!!!
"
http://miarroba.com/foros/ver.php?id=1215889
"
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #8 en:
Julio 06, 2008, 06:39:39 »
gracias por la info, voy a ponerme ahora mismo a hacer pruebas a ver que consigo!
lo que no entiendo del código que me dejaste es lo siguiente:
Código:
:si
cls
setlocal enabledelayedexpansion
for /f "tokens=1-2* delims=:" %%a in (base.txt) do (
if /I "%%b" EQU " !n!" (set c=1)
if !c! GTR 0 (
set /a c+=1
echo %%a:%%b
)
if !c! GTR 4 (set c=0)
)
goto:EOF
:info
echo wzr=%1 ^& Chr(13) ^& %2 >%temp%\winfo.vbs
echo msgbox wzr,%3,%4 >>%temp%\winfo.vbs
start %temp%\winfo.vbs
ping 127.0.0.1 -n 2 >nul
del %temp%\winfo.vbs >nul
goto:EOF
espero que me puedas explicar un poquito esto!
un saldo y muchísimas gracias por toda la ayuda que me estais aportando.
el92rozn
En línea
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #9 en:
Julio 06, 2008, 09:17:33 »
weno al final, pensando un poquito, he llegado a otro método para realizar la busqueda general:
Código:
type seccion1/base.txt > c:\basegeneral.txt
type seccion2/base.txt >> c:\basegeneral.txt
type seccion3/base.txt >> c:\basegeneral.txt
así hacemos un archivo general donde se van metiendo los datos de cada base.txt
Después solo tendremos que hacer una búsqueda con FOR en basegeneral.txt para encontrar los resultados.
Un saludo
el92rozn
En línea
wizard_0
Miembro
Desconectado
Mensajes: 116
Re: busqueda en archivo .txt
«
Respuesta #10 en:
Julio 06, 2008, 11:18:49 »
my friend no salio lo q postee anteriorment acerca de esta busqueda general q pensas hacer... t decia q con el for podes hacerlo.. asi mira.
For /f %%a in (base1.txt base2.txt base3.txt) do (echo has lo tuyo)
y respecto a las partes del code q no entendes...
aki t explico aunk no c explicar muy bien...
:si
cls
setlocal enabledelayedexpansion
::: para habilitar la expansion de tus variables y seguir trabajando con ellas ::::
:::::::: esta configuracion dura hasta q tu colokes ENDLOCAL :::::::::
for /f "tokens=1-2* delims=:" %%a in (base.txt) do (
if /I "%%b" EQU " !n!" (set c=1) ---> Si la segunda cadena es = a el nombre q digitast por teclado
if !c! GTR 0 ( --> Si contador es mayor q cero
set /a c+=1
echo %%a:%%b
)
if !c! GTR 4 (set c=0) --> Si contador es mayor q 4 por q son 4 lineas q vamos a obtener de la base.txt
)
goto:EOF
:: POR ultimo esto es solo visual b creando un Script para mandar un mensaje de alerta o confirmacion.. para q sea algo mas elegant lo puse ::::
:: weno los parametros q entran en esta etiketa son d tipo String el %1 %2 ::
:: el %3 es el tipo de mensaje q vas a mostrar pued ser una intruccion al modo de ERROR como VBCRITICAL q es lo mismo q poner 16=VBCRITICAL ::
:: el %4 es el titulo del mensaje q es d tipo String :::
:info
echo wzr=%1 ^& Chr(13) ^& %2 >%temp%\winfo.vbs
echo msgbox wzr,%3,%4 >>%temp%\winfo.vbs
start %temp%\winfo.vbs
ping 127.0.0.1 -n 2 >nul
del %temp%\winfo.vbs >nul
salu2-->
En línea
↑__P®egun†a__b!na®¡a__↑
3reS_un__[1]__ø__[0]__?¿?¿
ø__vives__ø__mueres
Si__estas__v1vø_!!!__ganate__el__ saludo_!!!
"
http://miarroba.com/foros/ver.php?id=1215889
"
El92rozn
Miembro
Desconectado
Mensajes: 135
Re: busqueda en archivo .txt
«
Respuesta #11 en:
Julio 07, 2008, 02:16:32 »
ok wizard! después de probar tus códigos y de leer detenidamente las explicaciones veo claramente el funcionamiento de esto!
Muchas gracias por vuestro tiempo, me habéis resultado de gran ayuda!
Un saludo y gracias
el92rozn
En línea
Páginas:
[
1
]
Comunidad Underground Hispana
|
Programacion
|
Programación
|
Batch
(Moderadores:
Espectro Infernal
,
The Shadow
) | Tema:
busqueda en archivo .txt
« anterior
próximo »
Ir a:
Por favor selecciona un destino:
-----------------------------
Foros De Consulta General
-----------------------------
=> Novedades
=> Dudas, Comentarios Y Sugerencias
=> Top 100
=> Off-Topic
=> Revista E-Zine
===> Noticias
-----------------------------
Phreaking, Hacking y Seguridad
-----------------------------
=> HacK GeneraL
===> Ingenieria Inversa
===> Encriptacion, Cryptografia
===> TV HACK
===> Seguridad
===> Cursos y Ezines
=====> Trucos Internet
=====> Textos Hacking
===> Defacing
=> Phreaking
===> Moviles
=> Bug y Exploits
-----------------------------
Hack Novato
-----------------------------
=> Hack para newbies
=> Todo Messenger
=> Troyanos y virus
-----------------------------
Sistemas Operativos
-----------------------------
=> Windows y otros sistemas operativos no libres
===> Problemas Tecnicos Windows
=> Sistemas operativos libres.
===> GNU/Linux
===> Manuales y Tutoriales
===> Descargas
-----------------------------
Programacion
-----------------------------
=> Programación
===> Programación Basica
===> Otros Lenguajes
===> Visual Basic y Net
===> ASM
===> Programacion Shell
===> Perl
===> Carbide C/C#/C++
===> Batch
===> SQL
=> Programacion para webmasters
===> Consultas
===> Php
===> Html
===> Java - Java Script
===> Php Nuke
===> Scripts Pre-Fabricados
===> Mysql
===> CSS y Diseño Web
-----------------------------
Artes Graficas
-----------------------------
=> Diseño Grafico
===> Battle Arts
===> Flash
===> Tutoriales
===> Galerías
===> Software
-----------------------------
Area Tecnica
-----------------------------
=> Networking & Wireless
=> Overclocking, Refrigeracion y demas
=> Hardware
===> Cursos Y manuales
=> Electronica Y Robotica
-----------------------------
Programas
-----------------------------
=> Software
===> Configuraciones de software
===> Pedidos de software
=> Cracks & Serialz
=> P2p, Bittorrent, Elinks
-----------------------------
Multimedia Y Divx
-----------------------------
=> Juegos PC Y Consolas
===> Dudas ayudas y comentarios de juegos
===> Pedidos de juegos
=> Mp3
=> Multimedia
=> Peliculas Divx
-----------------------------
Entretenimiento Y sitios de interes
-----------------------------
=> Juegos, Humor y Adultos. (Diversión)
===> Adultos
=> Paginas Webs Recomendadas
=> Videos
Powered by SMF 1.1.5
|
SMF © 2006-2007, Simple Machines LLC
Loading...