Detectar nuevo elemento en carpeta
- chekok
- Hacker del Foro
- Mensajes: 111
- Registrado: 16 Sep 2011, 11:50
- Ubicación: Valencia / España
- Contactar:
Detectar nuevo elemento en carpeta
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.
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.
- 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
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:)
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:)
- chekok
- Hacker del Foro
- Mensajes: 111
- Registrado: 16 Sep 2011, 11:50
- Ubicación: Valencia / España
- Contactar:
Re: Detectar nuevo elemento en carpeta
Gracias BasicOs, tan atento como siempre.
Voy a probar y subo el código.
Voy a probar y subo el código.
La vida es larga y dura.
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Detectar nuevo elemento en carpeta
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.
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)
- 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
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:)
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:)
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Detectar nuevo elemento en carpeta
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.
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)
- 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
Ximorro: ;) Messi también a veces da en el poste!!
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...
Salu22.)
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...
Salu22.)
- arkcrew
- Profesional del Autoit
- Mensajes: 506
- Registrado: 28 Sep 2009, 19:17
- Ubicación: Granada, España
- Contactar:
Re: Detectar nuevo elemento en carpeta
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!
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!
ArkCrew
http://www.nodluna.blogspot.com
http://www.nodluna.blogspot.com