Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: zhynar_X en 7 Mayo 2007, 15:54 pm



Título: Temporizador en BATCH
Publicado por: zhynar_X en 7 Mayo 2007, 15:54 pm
Hola, tengo una duda, hay alguna forma en batch de hacer que cuando pasen 20 minutos por jemplo el programa haga algo??

Saludos


Título: Re: Temporizador en BATCH
Publicado por: Hendrix en 7 Mayo 2007, 16:15 pm
Aqui lo tienes, no lo he probado, asi que si tiene fallos avisa.... ;) ;)

Código:
@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.  ;)



Título: Re: Temporizador en BATCH
Publicado por: zhynar_X en 7 Mayo 2007, 16:30 pm
Muchas gracias por el codigo ;D

Saludos


Título: Re: Temporizador en BATCH
Publicado por: sirdarckcat en 7 Mayo 2007, 16:43 pm
:-/
el batch consume memoria, seria mejor usar AT, aunque ocupa tambien, no ocupa tanta :P


Título: Re: Temporizador en BATCH
Publicado por: Hendrix en 7 Mayo 2007, 16:55 pm
xDDD e comando AT es "a lo facil"....xDDD  ;D ;D

Se me habia olvidado, gracais Sir... ;) ;)


Título: Re: Temporizador en BATCH
Publicado por: nhaalclkiemr en 7 Mayo 2007, 18:33 pm
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...

Código:
@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


Título: Re: Temporizador en BATCH
Publicado por: 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!!


Título: Re: Temporizador en BATCH
Publicado por: ne0x en 7 Mayo 2007, 19:18 pm
Aqui hay varias funciones, entre ellas la de sleep() con segundos o milisegundos.

Librería de funciones y scripts BATCH [En construccion]

http://foro.elhacker.net/index.php/topic,163184.0.html


Título: Re: Temporizador en BATCH
Publicado por: nhaalclkiemr en 8 Mayo 2007, 15:34 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 ;) ;)