elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] [APORTE] Clock (Alternativa a AT)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] [APORTE] Clock (Alternativa a AT)  (Leído 3,085 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
[Batch] [APORTE] Clock (Alternativa a AT)
« en: 4 Abril 2012, 06:55 am »

Hola.

Estaba haciendo unas correcciones en un script de una persona en otro foro, Y me gustó bastante la idea del script, Así que decidí mejorarlo y simplificarlo...



- Codeado por Ianna. Modificado por Elektro H@cker.

Básicamente el script se podría comparar con el comando AT, Para realizar una acción determinada a una hora determinada (Eso si, Del mismo día).
Obviamente no es un programador de tareas, Ni está tán completo como para commpararlo, Pero de algún modo si.
CLOCK Pausa el proceso por lotes hasta que llega la hora, Y luego continua.

Ejemplos:

Código
  1. Clock 08:15:00 Echo+ Buenos dias!
Código
  1. Clock 22:50:00 Shutdown /R
Código
  1. @Echo OFF
  2. Clock 14:30:00
  3. Echo Ha llegado la hora de comer!

PD: Realizar un comando después de la hora no es algo obligatorio.

Citar
Suspende el proceso de un programa por lotes hasta la hora determinada.

» CLOCK [HORA:MINUTO:SEGUNDO]

Ejemplos:

» CLOCK 20:30:15
» CLOCK 22:50:00 Shutdown /R

La hora se aplica con un formato de 24 horas.

(Codeado por Ianna. Modificado por Elektro H@cker.)


El Script:

Código
  1. :::::::::::::::::::::
  2. ::: CLOCK UTILITY :::
  3. :::::::::::::::::::::
  4. ::: By El_Ianna
  5. ::: Mod by Elektro H@cker
  6.  
  7. @ECHO OFF
  8.  
  9. REM Comprobación de errores.
  10. IF "%~1" EQU "/?" (GOTO :HELP)
  11. IF "%*" EQU "" (GOTO :MSG)
  12.  
  13. REM Seteo de la hora seleccionada.
  14. SET "FINAL=%1"
  15. SET "FINAL=%FINAL::=%"
  16. IF "%FINAL:~0,1%" EQU "0" (Set FINAL=%FINAL:~1%)
  17.  
  18. REM Seteo de la acción.
  19. SET "ACTION=%*"
  20. SET "ACTION=%Action:~8%"
  21.  
  22. :SLEEP
  23. SET "HORARIO=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
  24. SET "HORARIO=%Horario: =%"
  25. IF %HORARIO% GEQ %FINAL% (GOTO :END) ELSE (GOTO :SLEEP)
  26.  
  27. :HELP
  28. ECHO: MM'""""'YMM M""MMMMMMMM MMP"""""YMM MM'""""'YMM M""MMMMM""M
  29. ECHO: M' .mmm. `M M  MMMMMMMM M' .mmm. `M M' .mmm. `M M  MMMM' .M
  30. ECHO: M  MMMMMooM M  MMMMMMMM M  MMMMM  M M  MMMMMooM M       .MM
  31. ECHO: M  MMMMMMMM M  MMMMMMMM M  MMMMM  M M  MMMMMMMM M  MMMb. YM
  32. ECHO: M. `MMM' .M M  MMMMMMMM M. `MMM' .M M. `MMM' .M M  MMMMb  M
  33. ECHO: MM.     .dM M         M MMb     dMM MM.     .dM M  MMMMM  M
  34. ECHO: MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMM | MORE & REM "
  35. ECHO: Suspende el proceso de un programa por lotes hasta la hora determinada. | MORE
  36. ECHO: ¯ CLOCK [HORA:MINUTO:SEGUNDO] | MORE
  37. ECHO: Ejemplos: | MORE
  38. ECHO: ¯ CLOCK 20:30:15
  39. ECHO: ¯ CLOCK 22:50:00 Shutdown /R | MORE
  40. ECHO: La hora se aplica con un formato de 24 horas. | MORE
  41. ECHO: (Codeado por Ianna. Modificado por Elektro H@cker.) | MORE
  42. EXit /B 0
  43.  
  44. :MSG
  45. ECHO msgbox "La sintaxis del comando no es correcta. CLOCK /? para mas informacion.",16,"Utilidad Clock (By Ianna)" > "%TEMP%\Clock.vbs"
  46. START /B Wscript "%TEMP%\Clock.vbs"
  47. Exit /B 1
  48.  
  49. :END
  50. ECHO: Utilidad Clock (By Ianna) | MORE
  51. IF Defined ACTION %Action%


« Última modificación: 4 Abril 2012, 07:03 am por EleKtro H@cker » En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [Batch] [APORTE] Clock (Alternativa a AT)
« Respuesta #1 en: 4 Abril 2012, 16:12 pm »

Esta bueno, podrias hacer que sea solo HH:MM que es lo que mas se usara.. segundos no creo que alguien ponga, pero si alguien indica que tambien los cuente. No creo que lo modifiques, pero te digo solamente para que quede perfecto porque esta bueno.

Solo una pregunta.. no tenes porque contestarme vs si no sabes, cualquiera que lea aca igual.. Cuando se hacen bucles de mucho tiempo yo en otros lenguajes de programacion, utilizo una instruccion que es "DoEvents" que lo que hace es que no se trabe el programa y el usuario pueda seguir haciendo cosas, tambien para que no me consuma toda la memoria el bucle al verificar lo mismo muchas veces y muy rapido. Pero veo que vs no usas nada ahi, solo haces el bucle y ta.. sera que en batch no es necesario? has probado si no te consume ram como digo yo? no puedo probarlo yo en este momento.

Si no se entiende que digo, diganme, hablo del bucle principal:

Código
  1. :SLEEP
  2. SET "HORARIO=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
  3. SET "HORARIO=%Horario: =%"
  4. IF %HORARIO% GEQ %FINAL% (GOTO :END) ELSE (GOTO :SLEEP)



Perdon por el doble post pero que hace esto:

Código
  1. SET "HORARIO=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
  2. SET "HORARIO=%Horario: =%"

Parte por parte, porque me olvide, la primera si se que hace pero lo segundo no se el porque, pero explicame todo por las dudas, si podes claro. Gracias


« Última modificación: 4 Abril 2012, 17:02 pm por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: [Batch] [APORTE] Clock (Alternativa a AT)
« Respuesta #2 en: 4 Abril 2012, 17:03 pm »

veo que vs no usas nada ahi, solo haces el bucle y ta.. sera que en batch no es necesario?

Esto es procesamiento por lotes xD, No es que no séa necesario, Es que no se puede... Mientras el bucle trabaja, solo puedes esperar a que acabe...

Aquí en Batch no hay ni Rescue, ni DoEvents ni nada similar, Si lo sabes de sobra! xD
Gracias a Dios que batch ya tiene comparaciones condicionales, No le pidas más  :silbar:.


Lo de los segundos lo estuve pensado, Pero llegué a la conclusión de que dejando a un lado si se usará mucho o no, Es más preciso así, Y no cuesta nada teclear ":00" xD
De todas formas es algo que se solucionaría rápidamente dejando esta linea así:
Código:
SET "HORARIO=%TIME:~0,2%%TIME:~3,2%"
(Y usando el script sin escribir los segundos, claro, sinó puede que de error, Tendría que probarlo...)

Código
  1. SET "HORARIO=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
  2. SET "HORARIO=%Horario: =%"
la primera si se que hace pero lo segundo no se el porque

Eso es un fallo que correjí del code original, Que no funcionaba en horario de madrugada.
Si compruebas el contenido de la variable %TIME% entre las horas "0:00 AM - 9:00 AM", Siempre llevará un espacio al principio, Como por ejemplo esta hora: " 8:57:47,21"
Lo que hace la segunda linea es eliminar el primer espacio de la variable %horario% (Si tuviera un espacio).


Salu2!

En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [Batch] [APORTE] Clock (Alternativa a AT)
« Respuesta #3 en: 4 Abril 2012, 18:23 pm »

Ahi va, entendido. Hace poco un usuario pidio algo de esto y le hice un codigo con algo de esto, no se si tome en cuenta ese posible bug o no, se habra dado cuenta si no lo hice xD

Sobre lo del Doevents.. entonces yo si ejecuto el script para dentro de 8 horas, puedo trabajar tranquilamente en mi compu, hasta esa hora?, es la idea ya se, pero como te decia si haces esto en un lenguaje de programacion sin poner DoEvents no podes hacer nada. Pero ta, no es necesario el DoEvents, listo xD

Gracias.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.821



Ver Perfil
Re: [Batch] [APORTE] Clock (Alternativa a AT)
« Respuesta #4 en: 4 Abril 2012, 19:16 pm »

si ejecuto el script para dentro de 8 horas, puedo trabajar tranquilamente en mi compu, hasta esa hora?

hmm yo pensé que te referias al bat, no al pc xD.

El bat se queda procesando el bucle sin poder hacer nada en esa instancia de la consola, Por lo demás si puedes trabajar tranquilamente en tu PC, siempre y cuando no estemos hablando de un pc con 32 mb de ram xD, No se ralentiza pero quizás debería haber puesto algún "ping" en el bat...

Salu2
En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [Batch] [APORTE] Clock (Alternativa a AT)
« Respuesta #5 en: 4 Abril 2012, 19:48 pm »

Ahi va si, un ping es lo que he visto que usan en lugar del DoEvents, porque imaginate.. todas las veces que pasa por el bucle en poco tiempo, eso es lo que trae problemas, pero si lo has probado y todo bien, entonces no es el caso. Lo del ping no sirve porque dejara de ser preciso, si fuera hasta minutos solamente, ahi podes hasta meterle un ping de 20 paquetes igual, asi pasara por el bucle cada 20 segundos aproximadamente. Pero vamos, si ya anda ni te molestes
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Un pequeño aporte « 1 2 »
Scripting
najmuddin 13 7,606 Último mensaje 25 Junio 2008, 21:21 pm
por najmuddin
[Batch] Alternativa a cls
Scripting
0x0309 1 2,545 Último mensaje 27 Abril 2009, 08:21 am
por EddyW
[Batch] Aporte, Soy electronico
Scripting
Geormarsch 5 3,845 Último mensaje 9 Enero 2012, 10:24 am
por leogtz
[Batch] [APORTE] Text Protector
Scripting
Eleкtro 2 3,509 Último mensaje 29 Diciembre 2012, 13:42 pm
por Eleкtro
[APORTE] [BATCH] Acentos en los programas Batch - La mejor solución
Scripting
Príncipe_Azul 5 12,204 Último mensaje 2 Mayo 2014, 00:09 am
por cyberalejo17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines