Buscador de textos en varios tipos de archivos.

Autoit Avanzado más complejo con funciones "geek" para cualificarse como "ESPECIALISTA EN AUTOIT". Originales de autor, no copiados. Mín. 100 lineas
Responder
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Buscador de textos en varios tipos de archivos.

Mensaje por Chefito »

Hola amigos. Hace tiempo que no hago un programa completo (quien me conoce sabe que soy muy gandul y siempre los dejo a medio :smt005 ). Pero hoy os quiero sorprender con un programa un tanto especial.

Todo empezó en el trabajo. Había veces que tenía que buscar referencias (cadenas de texto) en muchos muchos muchos archivos excel y pdf (unos 6 o 7 años de archivos). Como me volvía loco varios días, decidí hacer un script que me buscase los textos el solito :smt002 . Empecé bien, pero ya sabeis como es esto a veces......dices: ya que estoy puesto voy a ver si hago que haga esto también, y esto, y esto otro, etc. Al final se complica el script una barbaridad :smt005 . Y al final salió lo que hoy os voy a colgar.

El script es un programa de búsqueda de múltiples textos en multiples tipos de ficheros. Entre ellos están: Word y Excel (búsqueda por objeto o texto), ficheros de texto plano, web (búsqueda por texto plano (html) o por el objeto word), y pdf (búsqueda gracias al programa de consola pdftotext).

El código está sumamente sucio y casi sin comentar. Lo he revisado por encima, pero seguro que tiene algunos errores. No he podido depurarlo más ya que mañana a primera hora me voy de vacaciones 5 días a la playita (Almuñecar :smt033 :smt033 :smt030 ) y se me ha echado el tiempo encima. Lo cuelgo para que lo vayais probando y me digais como os va, los fallos que encontrais, etc.

Ya he visto dos fallos que tengo que mirar con más detenimiento :smt024 . Uno es gordo, y es que cuando compilo el script en w7 no me funciona como debería. Pero si lo ejecuto desde el scite me va de lujo :smt017 . Será alguna opción de compilación???? Ya lo mirare el lunes cuando vuelva. Si encontrais la solución decirla.

El programa tiene un enlace a una pequeña ayuda. Dice así:
Esta es una pequeña ayuda del funcionamiento y funcionalidad del programa.

Como se puede observar se trata de un buscardor de múltiples textos en múltiples tipos de archivos.

En la pestaña resultados nos encontramos con una lista que nos muestra los archivos donde se ha encontrado algún texto de los buscados. Si pulsamos doble click en cualquiera de los archivos, se nos abrirá en su programa por defecto.

En la pestaña 'Opciones' tenemos 5 opciones, donde le diremos en que archivos debe buscar los textos, pudiendo ser éstos de texto, word, excel, web y pdf.
También encontramos una lista donde podemos introducir los textos a buscar.

En la pestaña 'Otros' vemos que podemos seleccionar entre una búsqueda sensitiva (busca el texto exacto que ponemos) o no sensitiva (busca el texto ignorando mayúsculas y minúsculas).
Debajo podemos observar unas opciones donde le diremos de que forma deben buscar el/los texto/s, en modo objeto (excel y word) o en modo texto.
Al lado vemos otra lista en el que podemos introducirle las extensiones sin punto de los archivos donde queremos buscar el/los texto/s. Para que funcione debemos marcar la casilla que pone 'Buscar extensiones'. Este método solamente busca en modo texto.
La lista de extensiones tiene una particularidad, y es que si le introducimos un asterisco ( * ), busca en el texto en todos los ficheros, ignorando todas la demás extensiones de la lista.
Cuidado con esta técnica. Si tiene muchos archivos y de gran tamaño el programa no responde bien. Pero aunque parezca que no responde, está funcionando ;).

Pues esto es todo. Espero que os guste y os sea de utilidad.
Saludos.
Cosas curiosas del programa:
El método de cálculo de porcentaje al revisar los archivos es distinto al típico de contar todos los ficheros (muy lento). Parece que he encontrado uno más rápido, sacar el tamaño de la carpeta a analizar e ir restando la cantidad de los archivos que voy revisando hasta llegar a cero. He visto que falla un poquito, pero creo que se por donde van los tiros :smt005 . Otra cosa que luego miraré (supongo).

Tratamiento de objetos word y excel, tanto directamente como con las udfs. Tuve que hacerlo casi todo directamente ya que con las funciones de las udfs el windows 7 con el office 2007 me fallaban bastante.

Tratamiento de errores cuando hay varios objetos.

Y supongo que alguna cosa más :smt003 .

Algo curioso de la historia del script: No iba a acabarlo. Lo abandoné en abril, cuando ya tenía todo lo complicado hecho.
El mes pasado empecé a investigar códigos referentes a la descarga de archivos por partes, y varios a la vez. Creo que he encontrado una buena solución a la falta de multihilo de autoit (hombre....buena lo que se dice buena, no :smt005 . Digamos pasable :smt003 ). Y después de esto me quise embarcar en un proyecto parecido al jdownloader o al mipony. Pero me daba pena dejar el proyecto de búsqueda de archivos a medio, asi que me puse y dije: Hasta que no acabe esto no empiezo lo otro :smt005 . Y hasta aquí hemos llegado por ahora.
Espero que el siguiente proyecto lo acabe, porque me interesa mucho mucho. Lo intentaré hacer más profesional. Habrá que esperar meses para que se vea algo a la luz.

Sin más dilación os dejo el script. Espero que os guste. No dudeis en preguntar si quereis saber algo. Intentaré aclararoslo :smt002 .

El script está probado con win xp sp3 y office 2003, y con win7 y office 2007. Con el office 2010 no lo he probado ya que no lo tengo. Parece que con offices anteriores al 2003 no funciona.

Saludos.
Adjuntos
Buscador de textos.zip
Script, pdftotext.ext (necesario para ejecutar el script) y el ejecutable (archivo compilado con todo lo necesario).
(1.02 MiB) Descargado 1377 veces
Imagen de la pestaña 'Opciones'
Imagen de la pestaña 'Opciones'
Busqueda_Archivos2.jpg (101.55 KiB) Visto 13873 veces
Imagen de la pestaña 'Resultados'
Imagen de la pestaña 'Resultados'
Busqueda_Archivos1.jpg (155.57 KiB) Visto 13873 veces
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Ximorro »

¡Muy bien jovencito! Sigue así y pronto podremos considerarte un profesional del AutoIt. :smt005

Bueno, ahora en serio, una pasada, no sé si encontraré fallos pero te haré alguna sugerencia.
Vaya currada el entorno, ¿es que no te gustan los controles normales de Windows? ja ja. Quien quiera ver cómo se manejan tabs y botones que no mire tu programa, quiero decir si quiere usar los normales.
Qué currada, los botones son labels y los tabs se montan a mano. Una cosa ¿para qué son los Graphic? ¿son sólo marcadores de dónde empiezan los tab o tienen más función?

Por ahora he buscado en texto y va muy rápido (hay un forero con problemas similares que va a abrir mucho los ojos cuando vea este programa, aunque para analizar esto va a necesitar algo de tiempo...), luego probaré otras cosas.
En los de Office ¿qué quiere decir "Formato texto" y "Formato Word/Excel? ¿es sólo por la forma de hacer la búsqueda o se pueden hacer búsquedas diferentes (¿buscar estilos de título, fórmulas?)

Como sugerencia así rápida estaría chulo que guardara un INI (o lo que sea) con algo de configuración personalizada. En realidad estoy pensando en las extensiones que pones para los archivos de texto (¡por ejemplo au3 ;-) ), es fácil que eso crezca y si hay que ponerlo cada vez...
Y ya puestos, en la lista de resultados, no sé si será muy complicado que además del doble clic para abrirlo, se pueda hacer clic derecho y que salga el menú contextual de Windows ¿se puede hacer? Es que después de encontrar los au3 se me ha ocurrido abrir uno en Scite, con doble clic lo ejecuto pero con el menú contextual lo podría haber abierto desde tu programa...

¡Bueno, muy cañero!
Ala, a disfrutar de las vacasssssssss
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Buscador de textos en varios tipos de archivos.

Mensaje por BasicOs »

Hola, fantástico el programa Hace lo que el windows no hace ;),
Esta muy bueno. Si lo deseas puedes añadir duplicados identicos en todo el fichero.(claro con el mismo texto)
Lo de busqueda sensitiva hace falte un tip para explicar. Y si lo deseas poner en inglés/español puede hacerse un ini ya que son pocas palabras, o si solo deseas traducir las principales te echo un cabo.

Si quieres incluir el programa compilado con sus recursos sería positivo para usarlo directamente,
Felicidades y felices vacaciones de Agosto. Ahora toca barna + la costa levantina :smt030 :smt026
Salu22:)
Pd: pueden grabarse unas opciones por defecto como la carpeta inicial de búsqueda e informar que si no tienes el word y excel no se pueden buscar(por ejemplo detectandolo al principio), yo tengo el openoffice/libreoffice hace años ;). Fantástico el programa
bath_hack
Hacker del Foro
Mensajes: 108
Registrado: 19 Sep 2008, 20:25

Re: Buscador de textos en varios tipos de archivos.

Mensaje por bath_hack »

Soy medio menzo para crear con autoit pero esta bueno lo que hiciste, eso de leer el texto de distintos archivos es novedoso. es como la funcion esa del access de buscar palabras o caracteristicas en bases de datos pero este es en varios archivos diferentes si mal no entendi.
:smt023
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Chefito »

Bueno chicos, ya estoy de vuelta de las vacaciones :smt004 .

Ante todo gracias por haber probado el programa y por vuestros comentarios. Me alegra que os haya gustado :smt023 .
Ximorro escribió:Bueno, ahora en serio, una pasada, no sé si encontraré fallos pero te haré alguna sugerencia.
Las que querais. Serán bien recibidas.
Ximorro escribió:Vaya currada el entorno, ¿es que no te gustan los controles normales de Windows? ja ja. Quien quiera ver cómo se manejan tabs y botones que no mire tu programa, quiero decir si quiere usar los normales.Qué currada, los botones son labels y los tabs se montan a mano. Una cosa ¿para qué son los Graphic? ¿son sólo marcadores de dónde empiezan los tab o tienen más función?
Jejejeje....quería algo más bonito que los típicos tabs y que no se tuviesen que utilizar imágenes externas para no tener que empezar añadir archivos. Así que se me ocurrió esa forma de hacer los tabs :smt002 .
Los graphics son solo estéticos. Limitan los tabs visualmente, nada más.
Ximorro escribió:Por ahora he buscado en texto y va muy rápido (hay un forero con problemas similares que va a abrir mucho los ojos cuando vea este programa, aunque para analizar esto va a necesitar algo de tiempo...), luego probaré otras cosas.
Supongo que a alguno le valdrá :smt001 , y podrá aprender cosas. Recurdo que antes de avandonarlo la primera vez (abril), un usuario estaba interesado.
Ximorro escribió:En los de Office ¿qué quiere decir "Formato texto" y "Formato Word/Excel? ¿es sólo por la forma de hacer la búsqueda o se pueden hacer búsquedas diferentes (¿buscar estilos de título, fórmulas?)
Simplemente le indicas si quieres que busque en modo texto (un simple stringinstr al código del archivo), o cargando el programa word o excel...utilizando la api de estos programas.
Por ejemplo, si abres un documento word con el bloc de notas, además de encontrarte una gran cantidad de caracteres raros (binario convertido a caracteres), entre ellos te encuentras el texto del documento. Lo que pasa es que hay otros textos que no vienen a cuento, todos los textos no se si los representará bien, etc. En excel 2003 creo que pasa lo mismo (en 2007 no).
Por esta razón he puesto las dos posibilidades. La que va a ser segura al 100% es utilizando los objetos.
Ximorro escribió:Como sugerencia así rápida estaría chulo que guardara un INI (o lo que sea) con algo de configuración personalizada. En realidad estoy pensando en las extensiones que pones para los archivos de texto (¡por ejemplo au3 ), es fácil que eso crezca y si hay que ponerlo cada vez...Y ya puestos, en la lista de resultados, no sé si será muy complicado que además del doble clic para abrirlo, se pueda hacer clic derecho y que salga el menú contextual de Windows ¿se puede hacer? Es que después de encontrar los au3 se me ha ocurrido abrir uno en Scite, con doble clic lo ejecuto pero con el menú contextual lo podría haber abierto desde tu programa...
Jejejeje....se pueden hacer muchísimas cosas. Dejé muchas en el tintero. Por ejemplo, quería haberle puesto tips a todos los controles, haber hecho una lista desplegable en la tabla de archivos encontrados para ordenar los archivos según varios criterios, haber mirado el como simular pasar el foco a los labels tabs que he creado, atajos de teclado, poner una lista despegable con varias extensiones para poder agregar (entre ellas .au3), ponerlo bilingue, etc. Pero no he tenido tiempo ni ganas :smt005 . Como puedes ver el código es muy extenso y ya estaba aburrido. Vi que lo importante (y algo más) estaba hecho y paré.
Sobre lo que me comentas de meter datos en un ini o un fichero de texto....se podría. Por ejemplo lo que tu dices, y también que recuerde los últimos textos buscados (con sus fechas y horas), poder volcar la búsqueda, etc. Pero es que si sigo no acabo nunca, y quería quitarme esta espina como fuera para hacer el que verdaderamente me interesa....jajajaja.... :smt005 :smt005 :smt005 :smt005 .
Y lo de que salga el menu contextual de windows, seguramente yo no lo haría. Pondría una opción en el menu contextual para que abriese la carpeta donde se encuentra el archivo cliqueado para que luego tu hicieses lo que quisieses con él :smt002 .
BasicOs escribió:Lo de busqueda sensitiva hace falte un tip para explicar
Como le comenté a Ximorro estaba previsto hacer tips a todos los controles. Pero no pudo ser. Falta de tiempo y ganas :smt030 .
BasicOs escribió:Y si lo deseas poner en inglés/español puede hacerse un ini ya que son pocas palabras, o si solo deseas traducir las principales te echo un cabo.
Lo de traducirlo, te digo lo mismo que te he dicho antes :smt002 . Si la gente lo va probando y lo voy corrigiendo, puede que lo mejore y lo traduzca, ya que se me pasó por la cabeza colgarlo en el foro de habla inglesa.
Jejejeje gracias por el ofrecimiento. Mi inglés es malo, pero supongo que podría llegar a traducir bien las palabras del programa. Otra cosa sería la ayuda (habrái que mejorar la ayuda. La hice muy rapidamente).
BasicOs escribió:Si quieres incluir el programa compilado con sus recursos sería positivo para usarlo directamente
Lo quería incluir, pero ya conté en mi primer post el problema que tuve con el compilado en el w7. Ahora que he venido de vacaciones tendré que mirar eso. Si alguien averigua algo que me lo diga. Voy a ver si lo soluciono y hago un ejecutable con todo.
BasicOs escribió:Pd: pueden grabarse unas opciones por defecto como la carpeta inicial de búsqueda e informar que si no tienes el word y excel no se pueden buscar(por ejemplo detectandolo al principio), yo tengo el openoffice/libreoffice hace años ;). Fantástico el programa
Lo de las opciones por defecto es lo mismo que le he dicho a Ximorro, y lo de informarte que no tienes word o excel, te debe informar una vez que le das a buscar en éstos y no los tienes instalados, que pienso que es mejor que al principio, ya que puede haber una muy remota posibilidad que el script esté ejecutado e instale el office antes de hacer la búsqueda :smt005 .
Se podría incluir búsqueda en openoffice. Si alguien se anima que lo haga.
bath_hack escribió:Soy medio menzo para crear con autoit pero esta bueno lo que hiciste, eso de leer el texto de distintos archivos es novedoso. es como la funcion esa del access de buscar palabras o caracteristicas en bases de datos pero este es en varios archivos diferentes si mal no entendi.
Entendiste bien :smt023 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Buscador de textos en varios tipos de archivos.

Mensaje por jamaro »

Probado con archivos PDF y DOC y funciona muy bien y rápido. Pensaba que con estos tipos de archivo tardaría (al crear el temporal en de PDF a TXT y con los DOC), pero no, parece que es bastante rápido. He probado en una carpeta con unos 60 archivos y ha tardado poco (en la segunda ejecución, incluso menos).

¡Felicidades!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Chefito »

Gracias jamaro.
A ver si esta semana hago un par de cambios para que en los archivos de texto sea más rápido. Cambiar los stringinstr por expresiones regulares (muy simple en mi caso).

Un amigo encontró un fallo. Con los archivos protegidos de word y excel parece que se para. No traté esa posibilidad. Lo tendría que ver :smt024 .

Por cierto, no es el lugar y ya te lo dije, pero tu también estás haciendo un buen trabajo con MiBiciPublica :smt002 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Ximorro »

Chefito, no cambies a expresiones regulares, si se trata de buscar textos fijos no siempre ganan, además el Unicode es un problema...
De esta semana no pasa que os haga una entrada explicando mis averiguaciones...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Chefito »

Ok ok, no recordaba lo del Unicode. Pues nada, se queda igual y punto. Antes de tener problemas dejo lo seguro :smt003 .

Jejejeje....esperando un post con esas explicaciones :smt023 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Buscador de textos en varios tipos de archivos.

Mensaje por jamaro »

Simplemente comentar que sigue siendo mi herramienta para buscar texto en PDFs y me resulta muy práctica.

¡Saludos!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Buscador de textos en varios tipos de archivos.

Mensaje por Chefito »

Gracias jamaro por utilizar la aplicación :smt002 . Fíjate, yo la hice para el trabajo y al final solamente la he utilizado 2 veces :smt005 . Eso sí, me ha sacado de tener que mirar esas dos veces pdf por pdf a ver donde estaba el numerito de serie :smt024 . Y te puedo asegurar que son muchos pdfs (reparaciones de terminales de unos 7 años. Un pdf por pedido de reperación) :smt024 :smt024 :smt024 . Pero menos mal que no nos solemos equivocar casi nunca :smt005 .

Supongo que con el tiempo que ha pasado, y lo poco que se más, lo podría mejorar y aumentar las opciones. Pero como he dicho muchas veces no hay muchas ganas ni tiempo. Quien sabe, puede que algún día..... .

Saludos y nuevamente muchas gracias a jamaro y a todo el mundo que le haya gustado y lo esté utilizando.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder