Temporizador en BATCH

Iniciado por zhynar_X, 7 Mayo 2007, 15:54 PM

0 Miembros y 1 Visitante están viendo este tema.

zhynar_X

Hola, tengo una duda, hay alguna forma en batch de hacer que cuando pasen 20 minutos por jemplo el programa haga algo??

Saludos
Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)

Hendrix

Aqui lo tienes, no lo he probado, asi que si tiene fallos avisa.... ;) ;)

@echo off
set man=%time:~3,2%
set /a min=%man%+20
echo %time%
echo %min%
if %min% GTR 60 (set /a min=%min%-60)
:while
Set now=%time:~3,2%
if %now% == %min% (goto accion) else (goto while)
:accion
echo Ya han pasado 20 minutos


Un Saludo.  ;)

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

zhynar_X

Muchas gracias por el codigo ;D

Saludos
Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)

sirdarckcat

:-/
el batch consume memoria, seria mejor usar AT, aunque ocupa tambien, no ocupa tanta :P

Hendrix

xDDD e comando AT es "a lo facil"....xDDD  ;D ;D

Se me habia olvidado, gracais Sir... ;) ;)
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

nhaalclkiemr

#5
Claro, por hacer se podría usar tambien el comando ping para esperar...pero lo mejor es usar AT o SCHTASKS

Aunke lo malo es que necesitas privilegios de Administrador...

@echo off
set a=0
set z=%TIME:~0,2%
if "%TIME:~0,1%"==" " set z=0%TIME:~1,1%
if "%TIME:~8,1%"=="," goto normal
if "%TIME:~10,1%"=="," goto 2caso
if "%TIME:~12,1%"=="," goto 3caso
:normal
set x=%TIME:~3,2%
set y=%TIME:~6,2%
goto a
:2caso
set x=%TIME:~4,2%
set y=%TIME:~8,2%
goto a
:3caso
set x=%TIME:~5,2%
set y=%TIME:~10,2%
:a
set errorlevel=
set /A a=%a%+1
if "%x%"=="08" set x=8
if "%x%"=="09" set x=9
set /A x=%x%+20
if %x% GTR 59 set /A x=%x%-60
at.exe %z%:%x% "archivo_que_quieras"
if %a%==11 goto b
if not %errorlevel%==0 goto a
exit
:b
set a=0
:c
set errorlevel=
set /A a=%a%+1
if %x% LEQ 9 set x=0%x%
schtasks /create /tn temp /tr "archivo_que_quieras" /sc once /st %z%:%x%:%y% /ru System
if %a%==11 goto error
if not %errorlevel%==0 goto c
exit
:error
echo "Se ha producido un error con los comandos, provando instruccion ping"
ping 127.0.0.1 -n 1200
"archivo que quieras"
exit


Este code te debería de funcionar, substitue "archivo_que_quieras" por el archivo que quieras (logico :xD ) y debería de funcionar...
Primero intenta utilizar el comando AT, despues el SCHTASKS y en caso de fallar utiza la instrucción PING para esperar los 20 minutos...

Saludos ;) ;)


Saludos
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

sirdarckcat

ah tienes razon nhaalclkiemr necesitas ser admin.. no habia pensado en eso..
se podria hacer mas pequeño tu codigo jeje :P, pero parece q funciona
ping es una buena opcion para emular un sleep() :P pero para este

Saludos!!


nhaalclkiemr

#8
Cita de: Sirdarckcat en  7 Mayo 2007, 19:15 PM
ah tienes razon nhaalclkiemr necesitas ser admin.. no habia pensado en eso..
se podria hacer mas pequeño tu codigo jeje :P, pero parece q funciona
ping es una buena opcion para emular un sleep() :P pero para este

Saludos!!

Si, weno, la verdad es que el codigo es largo pork le puse un metodo para corregir errores.

La parte del principio sirve para evitar que si un usuario tiene el formato de hora diferente del normal afecte al programa, podría hacer que no funcionara...

Despues intenta ejecutar el comando AT y se produce un error (si eres Admin o no existe AT) lo intenta con el SCHTASKS (tambien fallará si eres Administrador) y utiliza la funcion PING para esperar los 20 minutos...


Neox, he visto tus scripts y están bastante bien, hay algunos muy buenos...el de funcion SLEEP no lo prové pero por la pinta del codigo parece bueno...

Saludos ;) ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%