Autor
|
Tema: VBS residente para control de ejecución de un bat. ¿? (Leído 6,823 veces)
|
Shinseiki86
Desconectado
Mensajes: 33
Loading...
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Puedes probar algo como esto set objshell = createobject("Wscript.shell") Selecthora = "5.30,7.30,9.30,11.30,13.30,15.30,16.30" comando = "miarchivo.bat" horas = split(selecthora,",") task_event = -1 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 if task_event=ubound(horas) then wscript.quit end if end if Loop Function match_hour(hs,min) match_hour = -1 for i = 0 to ubound(horas) shs = cint(split(horas(i),".")(0)) smin = cint(split(horas(i),".")(1)) if hs=shs and min=smin then match_hour= i exit Function end if next 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
Mensajes: 33
Loading...
|
En el segundo if faltaba 'then' 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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
Mensajes: 33
Loading...
|
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...
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
Mensajes: 33
Loading...
|
Pues... la necesidad de hacerlo desde el lnk es porque el bat tiene dimensiones e icono preconfigurado... mejor dicho... es por puro capricho...
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
Mensajes: 33
Loading...
|
Necesito otra ayuda. Necesito que el script no se cierre... asi que comenté el segundo if 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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Entonces comentando esa parte ya esta .. el script esta programado así, como había dicho antes ... 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 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
|
|
|
|
|