Dany escribió:el codigo de chefito esta bien solo que agrega tambien los minutos sino el pc se reiniciara hasta que sean las 3 am jajajajaja
Por que dices esto? Error, el código que yo te dejé va bien. Entra en tal que la hora sea igual a 2. Mira la condición: @hour>=2. Para que se cumpla la hora debe ser mayor o igual a 2. Si la hora es 2, es igual, o sea que la condición se cumple
.
Tu condición es la que puede inducir a error al script si le aumenta el tiempo de parada aunque solamente sea un minuto y un segundo. Hay que tener mucho cuidado con poner a veces un simple igual en las condiciones. En este caso no va a pasar nunca porque es justo un minuto lo que se para el script. Pero, y si le quiere aumentar el tiempo?.
Ejemplo, imagina que quieres ejecutar el script cada dos minutos en vez de cada minuto.Imagina que el script se ejecuta justamente en el minuto 59. Si se ejecuta cada dos minutos, nunca va a comprobar el minuto 00, ya que del 59 siempre va a saltar al 01
.
Voy a ajustar más
. Imagina que en vez de sleep(60000) le pones un segundo más, sleep(61000). Incluso con un segundo más puede fallar....aunque es muy muy muy difícil, puede. Porque por alguna casualidad llega a pararse en esta hora el domingo, 01:59:59 y ya la hemos liado ese domingo jajajajaja, porque cuando pase esa parada de un minuto y un segundo, la próxima comprobación será a las 02:01:00. O sea, que se ha saltado el minuto 00. O sea, que la condición de @min=0 no se ha cumplido
.
Como se soluciona esto? Pues poniendo un mayor, @min>=0. Pero en este caso, en el caso de minuto 00, poner esto y no poner nada es lo mismo. No se necesita esta condición para nada, ya que cuando llege al minuto 00 la hora ya se habrá cambiado a 2 y con esta es suficiente.
Pero os voy a facilitar las cosas, y os voy a comentar otra técnica que se me ocurrió hacer a mí una vez
. Si os ponéis a pensar, las horas, minutos y segundos son grupos de números de dos dígitos normalmente separados por dos puntos. Pues juntando todos los números de la hora, forman un simple número, que se puede comparar con otro rápida y fácilmente
. Por supuesto esto solo puede hacerse en formato 24 horas, pero en su día comprobé que la macro de autoit @hour, te daba la hora en este formato aunque le cambiases la configuración de la hora en windows (lo comprobé en winxp).
Para aclararnos más, voy a poner un ejemplo:
Queremos comparar cualquier hora con las 2 de la madrugada (02:00:00). El número resultante quitando los dos puntos es 020000. Como es un número podemos obviar los ceros de la izquierda (20000). Este sería el número resultante con hora, minutos y segundos. Si quieres solamente comparar horas y minutos, pues sería 200.
Vale, ahora realizamos esto
con los segundos o esto
sin los segundos. Pues haciendo una simple comparación, if $hora>=20000 o if $hora>=200, según si ponéis segundos o no, estaría resuelto.
Indicar que estas macros tienen tipo string (texto), pero al hacer operaciones con números, autoit transforma su tipo automáticamente (o para hacerlo totalmente bien, simplemente haces un number($hora) y le cambias el tipo a numérico).
También se podría comparar en tipo string sin problema, pero en este caso las cadenas tendrían que ir enteras: if $hora>="020000" o if $hora>="0200".
Espero que os haya resultado algo interesante todo este rollazo
.
Pero como dije en el post anterior, yo me sigo inclinado por poner que se ejecute cada hora en vez de cada minuto, en este caso.
Respecto al tema de iniciar el script siempre que se inicie el windows, en windows no server que son con los que trabajo yo, se puede utilizar varias técnicas: programar una tarea, meterlo en el inicio, introducirlo en la clave del registro run....... Windows server supongo que tenga también estas posibilidades, pero apenas he trabajado con este tipo de servidores, asi que no aseguro nada
.
Saludos.