Tu aplicación debe estar controlada por un temporizador, un control tinmer con el intervalo puesto a 30000 (milisegundos).
En el evento de consumo del timer, debes poner una llamada al procedimiento que realiza la labor.
El procedimiento lo que hará será tomar los ficheros que hay en la carpeta. Para esto será útil disponer de un objeto filesystyemobject (añades una referencia del Microsoft Scripting Runtime), y algunos subobjetos de éste. Un objeto folder y 2 objetos file, uno para recorrer el bucle y el otro para asignación cuando se comparen fechas yéste sea más reciente.
se hace un : set elFolder = fso.getfolder(ruta)
y a continuación un bucle: for each f in elfolder.files ....
A partir de aquí puedes hacer una de 2 cosas, fiarte del nombre de archivo que (como indicas) contiene una especificación de fecha en su nombre, o no fiarte de dicho nombre y preferir la fecha de creación, o modificación del fichero.
Se trata por tanto, en este bucle de localizar el de fecha más reciente, una vez localizado (ya fuera del bucle) hace una llamada al procedimiento que tiene que operar con el fichero pasándole preciamente el objeto file. y ahí ya trabajas con él.
Debes tener algunas cosas en cuenta...
- por ejemplo si la aplicación que elabora los ficheros los tiene bloqueados hasta que termina de utilizarlos, no podrás usarlo, entonces tendrás que utilizar el fichero justo anterior a éste e ir por tanto siempre un fichero por detrás... si hay más de una aplicación escribiendo ficheros en esa carpeta esto te exigirá esmerarte más en recoger el archivo deseado.
- Si tardas más de los 30segundos en localizar y manipular el archivo se te iría acumulando trabajo y memoria, para evitar que el proceso se atasque, sería conveniente disponer de un portero en el timer, si no has terminado de operar con el fichero actual, sale del timer sin buscar el siguiente fichero, dándole otro plazo de 30sg.
- Si la carpeta contiene infinidad de archivos y/o son de diferente tipo, tal vez te interese más utilizar un objeto filelistbox y sobre el estableces un filtro. De entrada el filtro sería sobre la extensión de archivo. ' *.plf' y después dado que el propio nombre incluye datos relativos, a la fecha del proceso deberías ir actualizando este filtro, por ejemplo si el último fichero fue 2009_05_04 15_42_28 YF00D.plf y sabemos que cada hora al menos se crean 2 (por poner una cifra) entonces tomas como filtro la longitud del fichero que has usado, hasta el patrón del fivhero anterior '2009_05_04 15*.plf , nota el asterisco. Si la lista queda vacía sin duda ha cambiado la hora de 15 a 16, siempre que ocurra esto retiramos el último carácter al patrón de filtro anterior al asterisco, esto hasta que a lo sumo llegue el salto al año, una vez que se encuentra la lista con contenido el siguiente patrón de filtro volverá a ser el nombre del fichero entero menos el último campo (la referencia de pieza ignoro el patrón que sigue por tanto ahí deberás asegurarte tú), con este filtro, lo que consigues es que la lista de ficheros sea muy pequeña y por tanto sólo tendrás que localizar entre esta lista el más reciente. En este caso el cometido del timer será primero actualizar el fltro del filelistbox, como se ha comentado hasta que la lista tenga al menos 1 fichero. Eso si en este caso cuando arrancas la aplicación el primer fichero debe localizarse fuera del uso del timer, no tienes más remedio que recorrer toda la lista completa para localizar el más reciente, luego ya se usará ese nombre como filtro en las sucesivas llamadas. Ahora bien si sólo hay 40 ó 50 ficheros en la carpeta no habría diferencia entre usar el filesystemobject y el filelistbox
Ten en cuenta que el filelistbox, filtra la lista de ficheros que en realidad no es otra cosa que recorrer los ficheros de dicha carpeta y ver si el nombre cumple el patrón, algo que igualmente podrías hacer con el filesystemobject, no obstante el filelistbox te ahorra trabajo en ese sentido. Si la lista de ficheros es muy grande habría de mirarse si resulta conveniente ir pasando ficheros a otra carpeta, a fin de que esta lista siempre sea lo más pequeña posible...
Saludos.