Cronometro en VBS :p

Iniciado por Novlucker, 27 Junio 2008, 22:42 PM

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

Novlucker

Buenas...

Simplemente la idea se me ha ocurrido al ver el mensaje de Dirpok, en el que se intenta crear un cronometro en batch....pero como a mi me gusta más vbscript, porque me parece que da más posibilidades, he creado el mio en este lenguaje  ;D

El cronometro pide un nombre de usuario, sin el que no se pude comenzar, luego de eso queda a la espera de que se presione aceptar en un mensaje, una vez que se acepta, comienza el conteo  :P, al terminar avisa de cuanto tiempo se ha demorado (igualmente lo va haciendo a medida que van pasando los segundos)
Al dar aceptar nuevamente termina de contar, y guarde registro de la fecha y hora actual, así como el usuario, y su tiempo en un registro (C:\ranking.txt), y abre el archivo que contiene el ranking para que pueda verse  :P

A ver que les parece....

Código (vb) [Seleccionar]
set objshell = createobject("wscript.shell")
set objfso = createobject("scripting.filesystemobject")
set ranking = objfso.opentextfile("C:\ranking.txt",8,true)
do
usuario = inputbox("Ingresa tu nombre por favor...")
if usuario <> "" then
exit do
else
msgbox "Debes de ingresar un nombre de usuario para continuar..."
end if
loop
msgbox "Presiona aceptar para comenzar el conteo..."
empieza = time()
mensaje = -1
do while mensaje = -1
tiempo = datediff("s",empieza,time())
mensaje =  objshell.popup(tiempo,1,"Cronometro")
loop

ranking.writeline now() & chr(9) & usuario & chr(9) & "...." & tiempo & "seg."
ranking.close

msgbox "El tiempo insumido a sido de " & tiempo & " segundos"
objshell.run "C:\ranking.txt"


Creo que me ha quedado bastante bien  :rolleyes:

Mensaje original de donde saqué la idea

Cronometro en BATCH

Saludos
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

leogtz

Jeje, te ha quedado muy bien  :D

Esta muy bien, solo que el beep standard de Windows es muy molesto luego de unos segundos.

Saludos!
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Novlucker

#2
Es que es el efecto de los segundo que pasan  :xD

Se puede reducir a un simple contador en pantalla con un code como este..

Código (vb) [Seleccionar]
set objshell = createobject("wscript.shell")
msgbox "Presiona aceptar para comenzar el conteo..."
empieza = time()
do
tiempo = datediff("s",empieza,time())
wscript.echo tiempo
wscript.sleep 1000
loop


Con este code solo salta un mensaje en pantalla cada vez que le damos a aceptar, pero no se ve el efecto del tiempo pasando, y no se puede detener de ninguna manera  :xD (solo matando el proceso), o bien, se pude lanzar desde ms-dos invocando cscript del siguiente modo

cscript nombrequeledieron.vbs

En este caso comenzara a mostrar los numeros en la consola y se detendrá hasta bien no se pulse ^C, pero claro, no creará ningún tipo de registro.
Tiene la ventaja sobre batch, que el sleep de vbs si está desde win 98 en cualquier sistema, y además, vbs te permite utilizar funciones especificas de fecha y hora para poder marcar los tiempos sin errores  ;)

Saludos
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

carlitos.dll

Te felicito Novlucker, está muy bueno, lo que si, crítica constructiva, podría ejecutarse el txt en alguna carpeta temporal, porque en cuenta limitada, al no tener acceso a los directorios raíz, arroja error.

Por cierto, a mí no me sonó el beep, porque tengo la siguiente llave en el registro:

[HKEY_CURRENT_USER\Control Panel\Sound]
"Beep"="no"
"ExtendedSounds"="no"

Novlucker

#4
CitarTe felicito Novlucker, está muy bueno, lo que si, crítica constructiva, podría ejecutarse el txt en alguna carpeta temporal, porque en cuenta limitada, al no tener acceso a los directorios raíz, arroja error.

Muchas gracias carlitos.dll, y lo de la critica, toda critica constructiva es bienvenida, es más, yo tampoco pude ejecutarlo por el tema de los directorios raiz, y use el disco D:\ que era de una partición con acceso total (hice el script en el trabajo, en un momento de ocio  :rolleyes:), pero puse esa ruta, para que fuera fácil de identificar, con cambiarla basta, y de querer que vaya a la carpeta temporal, basta modificar un par de líneas.....

Código (vb) [Seleccionar]
set ranking = objfso.opentextfile("C:\ranking.txt",8,true)
Por esto......
Código (vb) [Seleccionar]
set ranking = objfso.opentextfile(objfso.getspecialfolder(2) & "\ranking.txt",8,true)
Y... esto....
Código (vb) [Seleccionar]
objshell.run "C:\ranking.txt"
Por esto otro.....
Código (vb) [Seleccionar]
objshell.run objfso.getspecialfolder(2) & "\ranking.txt"

;D

Saludos


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