pc auto restart

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

pc auto restart

Mensaje por mikeeps2 »

hola amigos , ando buscando algun ejemplo de algun script que me haga auto restart la pc a una determinada hora , 1 dia a la semana ...

la idea es que la computadora por ejemplo ,todos los domingos a las 2 de la madrugada haga un restart , osea qu se apage y se prenda de nuevo , como es especie de una pc server y yo tengo dos programas que luego se abririan solos , la idea es que se refresque todas las semanas .. alguien tendra algun script asi , yo tengo usando windows xp SP3

muchas gracias
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: pc auto restart

Mensaje por arkcrew »

Buenas,

Realmente lo que pides es muy facilito, o bien programas una tarea de windows, que una vez a la semana lance tu script, o bien te programas un script que tenga un timer o que compruebe cada 24 horas la fecha y cuando la diferencia sea de 7 días, que reinicie. Tienes una funcion de autoit que hace eso, Shutdown(2). Con eso, si no tienes un usuario y una clave en la sesion, el ordenador se debe reiniciar sin ningún problema.

Espero que te sirva!

Saludos!
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: pc auto restart

Mensaje por mikeeps2 »

jajja facilito para ti que sabes ... yo tengo que empesar a decifrar cada cosa que me comentastes
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: pc auto restart

Mensaje por arkcrew »

Tranqui, si eso son 6 líneas mal contadas, explicame claro y preciso que necesitas y cuando se ejecuta y te soy más claro en las explicaciones!

Saludos!
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: pc auto restart

Mensaje por Dany »

Creo que es mejor pasar 6 que 2.

podrias hacer algo asi.

Código: Seleccionar todo

while True
if @WDAY=1 then Shutdown(6)
sleep(1000) ; Un segundo 
WEnd
saludos
  • ............................................Imagen
    ......................................Imagen
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: pc auto restart

Mensaje por mikeeps2 »

OK dejame explicar mejor , tengo una pc servidor , que me gustaria que se refrescara cada semana , por ejemplo los domingos a las 2 de la madrugada por decir una hora exacta , entonces ya puse en starup de windows los dos programas que cuando windows reicie , se abran automaticos , ahora eso lo que quiero que todos los domingos , la pc se agaque , se prenda pa que refresque memoria ,osea que reinicie ... trate de hacerlo con el windows mismo , pero me da un error , por eso se me ocurrio si autoit pudiera hacer ese trabajito ...
otra cosa este script de autoit donde lo pondria , tiene que estar siempre ejecutado verdad ?

otra cosa esta pc server , nunca se apaga , ya que tiene un backup de bateria , por si pasa algo con la electricidad ella no se afecte y no se agaque
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: pc auto restart

Mensaje por Chefito »

Pues lo que pides es justo el código que te ha puesto Dany.
Si lo quieres ha las dos de la madrugada, pues le añades otra condición y ya está :smt002 .

Código: Seleccionar todo

while True
if @WDAY=1 and @hour>=2 then Shutdown(6)
sleep(60000) ; Un minuto
WEnd
Por cierto, aunque un segundo no es mucho, en tu caso no hace falta llamarlo cada segundo. Le he puesto que lo llame cada minuto, aunque se podría aumentar mucho más, por ejemplo cada 30 minutos....e incluso cada hora. Por eso le he puesto un >=2 (aunque le podría haber puesto para simplificar >1, pero lo anterior queda más claro), por si quieres hacer el sleep muuuuuuuuuyyyy largo jajajaja :smt005 .
Te he dicho lo anterior porque he supuesto que te da igual reiniciar el servidor a las 2, que a las 3, que a las 4 de la madrugada :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 ;).
mikeeps2
Hacker del Foro
Mensajes: 103
Registrado: 24 May 2008, 16:34

Re: pc auto restart

Mensaje por mikeeps2 »

pero hay cosas que no me quedan claras , una de ella es cuando dices que lo pusistes pa que lo llame cada minuto , yo no quiero que se reinicie varias veces , solo una sola ves cada domingo , por ejemplo ahora este domingo 24 , se reinice en la madrugada , y luego ya no hasta el proximo domingo y asi sucesivamente , lo puse en la madrugada porque es cuando no se usaria la pc , asi no afecta cuando reinicie ...

otra duda , el script lo hecho andar y nada mas , o tengo que dejarlo en algun lugar en espacifico ?

otra cosa , yo tengo que estar llamando ese script cada semana , o solo cuando reinicie ahi estara ya listo para que vuelva a reiniciar la siguiente semana ?
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: pc auto restart

Mensaje por Dany »

el codigo de chefito esta bien solo que agrega tambien los minutos sino el pc se reiniciara hasta que sean las 3 am jajajajaja

lo de el minuto es para el consumo del cpu.

Código: Seleccionar todo

while True
if @WDAY=1 and @hour>=2 and @MIN=00  then Shutdown(6)
sleep(60000) ; Un minuto
WEnd

para que quede mejor deberías agregarle un startup para que se inicio solo después del reinicio.

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

Re: pc auto restart

Mensaje por Chefito »

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
:smt017 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 :smt001 .

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 :smt001 .
Voy a ajustar más :smt005 . 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 :smt009 .

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 :smt003 . 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 :smt003 . 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

Código: Seleccionar todo

$hora=@hour & @min & @sec
con los segundos o esto

Código: Seleccionar todo

$hora=@hour & @min
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 :smt005 .

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 :smt012 .

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
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: pc auto restart

Mensaje por Dany »

chefito lo que quiero decir que el tu código en caso de que se iniciase con windows reiniciaría la computadora sin parar hasta que @wday cambie.


while True
if @WDAY=1 and @hour>=2 then Shutdown(6)
sleep(60000) ; Un minuto
WEnd


saludos bro
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: pc auto restart

Mensaje por Chefito »

Jajajaja, tienes toda la razon. Se me paso que al reiniciar se cargaria de nuevo :smt021 :smt005 . Lo siento por el fallo.
Pues para corregir esto se deberia poner otro valor en la condicion que nos indicase que ya ha sido reiniciado ese domingo. Podria ser la creacion de un archivo o la creacion de una clave en windows. Ademas de las condiciones ya dadas, se pondria otra que comprobase si existe ese archivo o esa clave de registro (o varia un valor en nuestra clave de registro). Si existe no se reinicia, pero si no existe se reinicia.
Tendriamos que meter una condicion que comprobase si @wday ha cambiado de 1 a cualquier otro numero. Si no es uno y existe el fichero o la clave creada, la borramos, y la condicion principal podra volver a ejecutarse cuando llege de nuevo el domingo normalmente.

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 ;).
Responder