Detectar nuevo elemento en carpeta

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Avatar de Usuario
chekok
Hacker del Foro
Mensajes: 111
Registrado: 16 Sep 2011, 11:50
Ubicación: Valencia / España
Contactar:

Detectar nuevo elemento en carpeta

Mensaje por chekok »

Hola!!!

Alguna sugerencia sobre como puedo saber si dentro de una carpeta dada se crea un nuevo fichero o carpeta dentro de ella. Ese nuevo elemento no lo crea el script autoit, el script lo que hace es iniciar la función X si existe una nueva carpeta que antes no estaba.

No se me ocurre nada de momento, he pensado en crear un array con el contenido de la carpeta inicial, luego volver a crear otro array de nuevo con el contenido y hacer una comparación entre ellos para así detectar si hay o no cambios, pero se me antoja un poco lío por si sabeis de alguna manera más simple de hacerlo.

Un saludo.
La vida es larga y dura.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Detectar nuevo elemento en carpeta

Mensaje por BasicOs »

Mas simple es calcular los megas o espacio que usa la carpeta, o/y listar el numero de elementos dentro de la carpeta.
y cuando cambie el espacio volver a listar esa carpeta a ver en que nombres de fichero ha cambiado, y si ha cambiado hacer otra vez el algoritmo que desees,
Salu22:)
Avatar de Usuario
chekok
Hacker del Foro
Mensajes: 111
Registrado: 16 Sep 2011, 11:50
Ubicación: Valencia / España
Contactar:

Re: Detectar nuevo elemento en carpeta

Mensaje por chekok »

Gracias BasicOs, tan atento como siempre.

Voy a probar y subo el código.
La vida es larga y dura.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Detectar nuevo elemento en carpeta

Mensaje por Ximorro »

Me temo que con DirGetSize no te detecta una carpeta vacía, así que si no crean archivos con contenido dentro (y usas el modo recursivo de DirGetSize) no lo verás mirando el tamaño.

No veo una función directa que te diga el número de archivos dentro de una carpeta, así que me temo que te tocará hacerlo "a mano" con FileFindFirstFile/FileFindNextFile

Si no quieres hacer el código de cero puedes usar (o mirar y modificar) algo de la udf File.au3, por ejemplo _FileListToArray.
Si miras la carpeta muy agresivamente será mejor simplificar la función para no hundir CPU/disco.
"¿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: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Detectar nuevo elemento en carpeta

Mensaje por BasicOs »

Con dirgetsize se puede conseguir adicionalmente el número de ficheros y dirs, usando un flag adicional ;) También se puede usar el command dir>mitxt.txt y leer lo pero no creo que lo necesites, a menos que quieras comparar si dos ficheros mitxtantes.txt mitxtactual.txt...
Es conveniente poner un sleep(1000) al menos para no saturar la cpu o sleep(500) para cada medio segundo de revisión, o menos.... depende para que
Salu22:)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Detectar nuevo elemento en carpeta

Mensaje por Ximorro »

Touché! Cierto, el modo extendido. Sí, olvida lo que dije antes, con eso perfecto si es para saber si aparecen más carpetas.

Además de un bucle con un sleep, si el programa tiene que estar haciendo otras cosas puedes programar la tarea con las funciones Adlib. Yo también recomendaría un segundo, o como mucho medio.
"¿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: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Detectar nuevo elemento en carpeta

Mensaje por BasicOs »

Ximorro: ;) Messi también a veces da en el poste!! :smt115 :smt017

Gracias por tu aporte, entre todos vamos optimizando, que 4 o 6 ojos ven más que dos, y cualquiera puede aportar, ;) , y todo es escribir hablar y compartir ideas, seguro que hay más maneras diferentes de hacerlo que no se nos han ocurrido, aún así todas funcionan... :smt023
Salu22.)
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Detectar nuevo elemento en carpeta

Mensaje por arkcrew »

Hola,

Creo que se podría hacer guardando el listado de los archivos anteriores y compararlo con el nuevo, además si se implementa algo más de código se podría hacer para listar los archivos que estaban antes y los que ahora no están o viceversa, e incluso se podría programar algo para que actualizase siempre esa carpeta con el contenido de otra.

Espero que esa idea no se haya comentado, sino no se me ocurre otra xD

Saludos!
Responder