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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  VBS residente para control de ejecución de un bat. ¿?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: VBS residente para control de ejecución de un bat. ¿?  (Leído 4,793 veces)
Shinseiki86

Desconectado Desconectado

Mensajes: 33


Loading...


Ver Perfil
VBS residente para control de ejecución de un bat. ¿?
« en: 23 Octubre 2009, 21:10 pm »

Hola a todos.

Resulta que en la empresa inhabilitaron "Tareas programadas" por un virus que se les coló... y me jodieron...

Tengo un bat que se debe ejecutar todos los dias desde las 5:30 am cada dos horas hasta las 3:30 pm y otra vez a las 4:30 pm, para un total de 7 ejecuciones en el dia.

No se mucho de vbs, pero me imagino que se puede hacer un residente oculto, que valide que no se ejecute dos veces y que ejecute el bat a las horas destinadas....

¿Alguien me puede ayudar?

De antemano... !Gracias!


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #1 en: 24 Octubre 2009, 03:55 am »

Puedes probar algo como esto

Código
  1. set objshell = createobject("Wscript.shell")
  2.  
  3. Selecthora = "5.30,7.30,9.30,11.30,13.30,15.30,16.30"
  4. comando = "miarchivo.bat"
  5.  
  6. horas = split(selecthora,",")
  7. task_event = -1
  8.  
  9. Do
  10. wscript.sleep 30000
  11. new_task_event = match_hour(hour(now()),minute(now()))
  12. if new_task_event > task_event then
  13. task_event = new_task_event
  14. objshell.run comando, vbhide
  15. if task_event=ubound(horas) then
  16. wscript.quit
  17. end if
  18. end if
  19. Loop
  20.  
  21. Function match_hour(hs,min)
  22. match_hour = -1
  23. for i = 0 to ubound(horas)
  24. shs = cint(split(horas(i),".")(0))
  25. smin = cint(split(horas(i),".")(1))
  26. if hs=shs and min=smin then
  27. match_hour= i
  28. exit Function
  29. end if
  30. next
  31. End Function

Para configurar el script debes de poner las horas a las que se ejecutará (Selecthora), separando hora y hora entre coma, y hora y minuto con punto (como aparece en el propio script).

Si te fijas ya he puesto las horas a las que dices se debe de ejecutar

El script revisa cada 30 segundos a ver si coincide hora y minuto actual con uno de los que aparece en la lista, si coincide revisa que no se haya ejecutado antes, y si esta todo ok ejecuta un comando, en este caso he puesto que se ejecute un bat en modo oculto. Por otra parte, si el script ejecuta un comando y coincide con que es el último horario de ejecución, se detiene (cierra)

Para probarlo podrías cambiar las horas de ejecución y poner por ejemplo a ejecutar la calculadora (calc)

Saludos


« Última modificación: 24 Octubre 2009, 20:14 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Shinseiki86

Desconectado Desconectado

Mensajes: 33


Loading...


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #2 en: 24 Octubre 2009, 15:56 pm »

En el segundo if faltaba 'then'

Código:
if task_event=ubound(horas) then
 wscript.quit
end if

Como necesito ver el resultado del bat, quité vbhide. Estoy haciendole pruebas y funciona de maravilla! Gracias Novlucker!

Es posible hacer que ejecute un .lnk? Cuando se ejecuta desde el vbs primero me abre 2 ventanas para buscar carpeta y mover los archivos seleccionados. Si le doy en aceptar, mueve el acceso directo a la carpeta seleccionada. Si le doy cancelar a ambas, ejecuta el bat.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #3 en: 24 Octubre 2009, 20:16 pm »

Es verdad, es que lo había probado sin ese if, eso se me ocurrio despues

No debería de haber problemas para ejecutar el ".lnk", pero no entendí lo de la carpeta y demás XD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Shinseiki86

Desconectado Desconectado

Mensajes: 33


Loading...


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #4 en: 24 Octubre 2009, 20:39 pm »

Cuando lo hago con un .lnk, al cumplirse la condición y ejecutarse "comando" me despliega una ventana para mover el acceso directo, pero no lo ejecuta.

No se si sea porque lo ejecuto en un Win2000...  :huh:
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #5 en: 24 Octubre 2009, 20:48 pm »

Ya veo, a mi también me funciona bien abriendo un lnk a una carpeta por ejemplo, pero uno a una imagen se abre y se cierra.

Y si directamente le pones la ruta a la cual apunta el lnk, o si abres el lnk y lees la ruta?

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Shinseiki86

Desconectado Desconectado

Mensajes: 33


Loading...


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #6 en: 24 Octubre 2009, 20:53 pm »

Pues... la necesidad de hacerlo desde el lnk es porque el bat tiene dimensiones e icono preconfigurado... mejor dicho... es por puro capricho...   ;D
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #7 en: 24 Octubre 2009, 21:03 pm »

Ya veo, igual acabo de probar con un lnk a un bat, y me funciona sin problemas  :-\

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Shinseiki86

Desconectado Desconectado

Mensajes: 33


Loading...


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #8 en: 26 Octubre 2009, 17:14 pm »

Necesito otra ayuda.

Necesito que el script no se cierre... asi que comenté el segundo if

Código:
Do
wscript.sleep 30000
new_task_event = match_hour(hour(now()),minute(now()))
if new_task_event > task_event then
task_event = new_task_event
objshell.run comando ', vbhide  'Para ocultar el progrma ejecutado
'if task_event=ubound(horas) then     'Cierra el script si no hay mas horas programadas
' wscript.quit
'end if
end if
Loop

Pero además necesito que cuando termine, se repita al dia siguiente con las mismas horas programadas.

La idea es no apagar el pc y que a las 5.30 se ejecute solo otra vez.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: VBS residente para control de ejecución de un bat. ¿?
« Respuesta #9 en: 26 Octubre 2009, 17:45 pm »

Entonces comentando esa parte ya esta .. el script esta programado así, como había dicho antes ...

Citar
El script revisa cada 30 segundos a ver si coincide hora y minuto actual con uno de los que aparece en la lista, si coincide revisa que no se haya ejecutado antes, y si esta todo ok ejecuta un comando

El script seguirá revisando las horas, y mañana cuando vuelvan a ser las 05:30 entonces la hora coincidirá con una de la lista, el script revisará si coincide con la última ejecución, el de las 16:30, y como no coincidirá volverá a comenzar :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
residente en windows 7
Programación General
sbc10 9 1,826 Último mensaje 1 Diciembre 2014, 15:30 pm
por sbc10
Control de prioridad de ejecución de núcleos.
Java
Programar_Java 3 626 Último mensaje 13 Noviembre 2018, 23:57 pm
por sapito169
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines