Hola.
Recien acabo de empezar con el batch, he echo una calculadora y 4 o 5 tonterias mas para aprender
pero.. como podria hacer un cronometro?
tengo un proyecto en mente de un cronometro y no se ni por donde empezar
comando sleep?
ping -n 127.0.0.1>nul ?
El proyecto sera un cronometro que con la tecla espacio empezará y con la misma parará el cronometro. habra un ranking de tiempos y con el tiempo ire añadiendo nuevas funciones para tener un cronometro sencillo y rapido y con todo lo necesario
Es mas que nada para los aficionados al cubo de rubik como yo, para poder cronometrar nuestros tiempos de forma muy muy rapida y sin programas pesados :P
Muchisimas gracias de antemano
Un cordial saludo
Dirpok.
Que empieces con cosas sencillas, no es ninguna tonteria.
Yo hace rato que estaba aprendiendo hice un cronometro sencillo en Batch, con cuenta ascendente y descendente.
PD : Yo no tengo el comando Sleep
@echo off
Title Cronometro by RockoX
color d
:menu
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Cronometro by RockoX 1.2 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo.
echo.
echo 1.-Cuenta ascendente
echo 2.-Cuenta descendente
echo 3.-Salir
echo.
echo.
echo.
set /p opc= Teclee el numero de la opcion dada:
if [%opc%]==[] cls & Echo No has puesto nada! & pause>nul & goto menu
if %opc%==1 goto asc
if %opc%==2 goto desc
if %opc%==3 goto salir
:asc
cls
color a
:Empezar
cls
Set /p Comenzar=Teclee un numero para empezar:
if ["%Comenzar%"]==[""] (
goto:Empezar
)
echo.
echo.
:Detencion
cls
set /p Detener=Indique el numero en el que parara:
if ["%detener%"]==[""] (
goto:Detencion
)
:inicio
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %Comenzar%
ping -n 1,5 localhost>nul
set /a Comenzar=%Comenzar%+1
if %Comenzar%==%Detener% goto terminado
goto inicio
:terminado
cls
msg * La cuenta ha terminado...
pause > nul
goto menu
:desc
color b
cls
set /p iniciar=Teclee el numero para empezar:
cls
set uno=1
:empieza
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %iniciar%
set /a iniciar=%iniciar%-%uno%
ping -n 1.5 localhost>nul
if %iniciar%==0 goto terminado
goto empieza
:salir
msg * by RockoX!
exit
Con respecto a lo de empezar con la tecla Espacio del teclado, no creo que sea posible.
Pero puedes detener el Batch en Ejecucion con CTRL + S
Saludos
:)
:D :D Muchisimas gracias!! buen programa
Yo exactamente quiero una cosa rapida, que al apretar alguna tecla (ya que con espacio no se puede) empieze a cronometrar, y con otra lo mismo
Todo esto y mucho mas lo hare si me das el permiso de basarme en tu programa para hacer mi cronometro para los Fans de Rubik :D:D
en el menú pondre Basado en el cronometro de RockoX o lo que creas apropiado y en el leeme te dare las gracias ;)
Muchisimas gracias de antemano.
PD: El programa en un principio estara en catalan y castellano. pero tengo en mente traducirlo al ingles y al frances / italiano / aleman o mas lenguas si encuentro a gente :D
Naaa, no hay de que Dirpok, estamos para ayudar :)
Saludos!
Muchisimas gracias! :D
si quieres agregame y te mantendre informado sobre el programa
Oye. esto tarda menos que un segundo :S probe de ponerlo en 2.0 y tarda mas que un segundo :(
Hay alguna manera de ver decimas?
Los ping -n
Cambialos por Ping -n 2
Que masomenos corresponderia a 1 segundo..
Saludos
... espera, se me está ocurriendo una forma de hacerlo, pido un poco de tiempo.
Nota: RockoX, está bueno el code, eso si, presionas por ejemplo un número mayor que 3, no lo valida.
Listo. Espero que sirva Dirpock.
::CarlitoS.dll
@echo off
color 70
set /a cont =0
pause
:time
set mirror1=%time:~-4%
set /a mirror1=%mirror1:~0,1%
:increment
set mirror2=%time:~-4%
set /a mirror2=%mirror2:~0,1%
if not %mirror2%==%mirror1% (goto cont)
goto increment
:cont
set /a cont +=1
cls
echo CRON: %cont%
goto time
::CarlitoS.dll
Asi es como podes hacer que el cronometro empiese al presionar una tecla:
@echo off
Title Cronometro by RockoX / Modificado By Arkangel
color d
:menu
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Cronometro by RockoX 1.2 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo.
echo.
echo 1.-Cuenta ascendente
echo 2.-Cuenta descendente
echo 3.-Salir
echo.
echo.
echo.
echo -.Modificado by Arkangel.-
echo.
echo.
set /p opc= Teclee el numero de la opcion dada:
if [%opc%]==[] cls & Echo No has puesto nada! & pause>nul & goto menu
if %opc%==1 goto asc
if %opc%==2 goto desc
if %opc%==3 goto salir
:asc
cls
color a
:Empezar
cls
Set /p Comenzar=Teclee un numero para empezar:
if ["%Comenzar%"]==[""] (
goto:Empezar
)
echo.
echo.
:Detencion
cls
set /p Detener=Indique el numero en el que parara:
if ["%detener%"]==[""] (
goto:Detencion
)
:listo
cls
echo.
echo.
echo.
echo El cronometro esta listo, presione una tecla para empezar...
echo.
echo.
echo.
pause > nul
if %opc%==1 goto inicio
if %opc%==2 goto empieza
:inicio
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %Comenzar%
ping -n 1,5 localhost>nul
set /a Comenzar=%Comenzar%+1
if %Comenzar%==%Detener% goto terminado
goto inicio
:terminado
cls
msg * La cuenta ha terminado...
pause > nul
goto menu
:desc
color b
cls
set /p iniciar=Teclee el numero para empezar:
cls
set uno=1
goto listo
:empieza
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %iniciar%
set /a iniciar=%iniciar%-%uno%
ping -n 1.5 localhost>nul
if %iniciar%==0 goto terminado
goto empieza
:salir
msg * by RockoX ^& by Arkangel!
exit
Saludos ;)
:D ;D
Aqui una pequeña modificacion, la cuenta ya no corre tan rapido, y corregido por si el usuario introduce algo que no se le pide :
@echo off
Title Cronometro by RockoX / Modificado By Arkangel
color d
:menu
cls
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Cronometro by RockoX 1.2 º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo.
echo.
echo 1.-Cuenta ascendente
echo 2.-Cuenta descendente
echo 3.-Salir
echo.
echo.
echo.
echo -.Modificado by Arkangel.-
echo.
echo.
set /p opc= Teclee el numero de la opcion dada:
if [%opc%]==[] cls & Echo No has puesto nada! & pause>nul & goto menu
if %opc%==1 goto asc
if %opc%==2 goto desc
if %opc%==3 goto salir
if %opc% LSS 1 (
goto:menu
)
if %opc% GTR 3 (
goto:menu
)
:asc
cls
color a
:Empezar
cls
Set /p Comenzar=Teclee un numero para empezar:
if ["%Comenzar%"]==[""] (
goto:Empezar
)
echo.
echo.
:Detencion
cls
set /p Detener=Indique el numero en el que parara:
if ["%detener%"]==[""] (
goto:Detencion
)
:listo
cls
echo.
echo.
echo.
echo El cronometro esta listo, presione una tecla para empezar...
echo.
echo.
echo.
pause > nul
if %opc%==1 goto inicio
if %opc%==2 goto empieza
:inicio
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %Comenzar%
ping -n 1,5 localhost>nul
set /a Comenzar=%Comenzar%+1
if %Comenzar%==%Detener% goto terminado
goto inicio
:terminado
cls
msg * La cuenta ha terminado...
pause > nul
goto menu
:desc
color b
cls
set /p iniciar=Teclee el numero para empezar:
cls
set uno=1
goto listo
:empieza
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %iniciar%
set /a iniciar=%iniciar%-%uno%
ping -n 2 localhost>nul
if %iniciar%==0 goto terminado
goto empieza
:salir
msg * by RockoX ^& by Arkangel!
exit
¿Algun comentario para mi code? En mi máquina funciona perfectamente.
A mi tu code tambien me funciona perfecto. :)
Yo me compraria un reloj digital con cronometro :xD
Naaa, es solo un poco de humor. Sinceramente estos códigos estan muy buenos. Y es bueno que estes aprendiendo esto Dirpok ya que te motivara aprender otros lenguajes.
Y de a poco viene tomando vuelo el scripting batch... ¿No RockoX? Veo que sabes mucho :xD. Aguante el batch jeje.
Saludos amigos. ;)
yo digo lo mismo que lukhardy...muy buenos codes, y que viva el batch...
Saludos.
Soy muy nuevo aquí, y veo que la comunidad crece... Yo tambien digo "Aguante Batch" y "Aguante a este Foro". No se imaginan lo útil que ha resultado entrar a esta Casa, espero poder aportar algo...
Buenas, he estado mirandome el code porq me interesaba y he leido todos los coment sobre como hacer para que el reloj ascendente se parara al pulsar alguna tecla.
Pues bien, con alguna modificacion, creo q he conseguido a medias lo q buscaba.
Este es el code solo del reloj ascendente. Lo q he hecho es utilizar otro bat para pararlo por medio de un comando for en el bucle.
Bueno, mejor provarlo y mirarlo q os aclarareis mejor, como veis el code es bastante simple y seguramente se puede hacer mas corto.
@echo off
set /p ini=Introduzca un numero para empezar la cuenta:
if "%ini%"=="" set ini=1
if %ini% LSS 1 goto error
cls
echo El cronometro esta listo para empezar.
echo Para detener el cronometro pulse cualquier tecla en el bat que se abre.
echo.
echo.
echo @echo off > detencion.bat
echo title Detencion >> detencion.bat
echo echo Funcionando ^> detener.txt >> detencion.bat
echo echo Pulse cualquier tecla para detener el cronometro. >> detencion.bat
echo pause^>nul >> detencion.bat
echo echo Detener ^> detener.txt >> detencion.bat
echo exit >> detencion.bat
echo Pulse cualquier tecla para que empiece la cuenta.
pause>nul
start detencion.bat
:inicio
cls
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo %ini%
ping -n 2 localhost>nul
for /f "tokens=*" %%b in (detener.txt) do set var=%%b
if %var%==Detener goto cuter
set /a ini=%ini%+1
goto inicio
:cuter
del /q detencion.bat
del /q detener.txt
echo.
echo.
echo.
echo La cuenta ha finalizado.
echo Pulse cualquier tecla para volver al menu.
pause>nul
goto menu
:error
cls
echo Introduzca un numero valido.
echo.
echo.
echo Pulse cualquier tecla para continuar.
pause>nul
goto asc
La duda q tengo yo es q con mi code, el reloj se retrasa 3 seg cada minuto respecto del tiempo q tenia q ser.
Entonces lo q he probado es a meter ping -n 1.9 o ping -n 1,9 pero todo esto no me funciona, hay alguna forma para q funcione y los segundos vayan exactos?
saludos
He actualizado el code del cronómetro:
::CarlitoS.dll
@echo off
color 70
set /a cont =0
pause
:time
set mirror1=%time:~-4,1%
:increment
set mirror2=%time:~-4,1%
if not %mirror2%==%mirror1% (goto cont)
goto increment
:cont
set /a cont +=1
cls
echo CRON: %cont%
goto time
::CarlitoS.dll
Muchisimas gracias!
me ha servido mucho para aprender un poquito mas
he estado un poco parado este tiempo. xD es mas, no me acordaba ya de este post
Carlitos.dll
muy bueno el tuyo. la verdad es que no lo entiendo, pero tampoco es que sepa mucho sobre batch, hay comandos que aun no he utilizado
de tu forma, se podria hacer, pero que con otra tecla se parase el cronometro?
alguna forma de ver decimas?
1 saludo!
no es tan tan exacto, pero yo lo he probado con reloj en mano.
Funciona así:
considera la variable %time%
Ejemplo:
9:32:57,50
y extrae el cuarto carácter contando desde el final.
en este caso el 7
Luego realiza la misma tarea, si el carácter ha cambiado, incrementa en 1 el contador y lo muestra, si no, vuelve a crear otro "espejo" y comparar hasta que se cambie ese carácter. (Todo va en los MHz :D)
Ok, bueno me sirve!
jaja gracias
oye y para pararlo con una tecla? (ya que es para cronometrar tiempos mi proyecto)
el de kraszic no me funciona y me lia tanta cosa jajaja
for /f "tokens=*" %%b in (detener.txt) do set var=%%b
if %var%==Detener goto cuter
set /a ini=%ini%+1
supongo que es esto no?
Mi idea es que se guarde en un archivo que luego se interpretara en el batch para un ranking.
He leido en otro post que hay un codigo para leer un texto de un archivo, pero me lee la ultima linea.
Si no hay solucion he pensado en hacer un archivo para kada tiempo (10 archivos) del mas rapido al mas lento.
@echo off
:start
set /p lin=Ingrese la linea a descubrir:
set txt=hola.txt
for /f "tokens=1 skip=%lin%" %%a in (%txt%) do set n=%%a
set/a var=%n%-1
echo La linea nro. %lin% contiene : %n%
echo.
echo.
pause>nul
goto start
Que tengo que cambiar para que me lea la linea que quiera (aunque despues no se como hacer que el programa guarde los tiempos en orden, kreo que se como hacerlo si es con un archivo para cada tiempo.
Bueno muchisimas gracias y un saludo!
con respecto a lo de q mi code no te funciona, no lo entiendo.
En mi ordenador funciona a la perfeccion.
Lo q hace el batch para parar el cronometro es comprobar si existe una palabra en un archivo (comando for), esta palabra la creamos mediante el otro batch q es donde tenemos q apretar cualquier tecla para crearla.
Tambien lo podria haber hecho mas facil con un if exist o algo asi, pero siempre tienes q utilizar otro batch para pararlo.
En cuanto a tu segunda pregunta, yo al final lo logre mediante este code:
@echo off
set /p %lin%=Introduce la linia:
for /f "tokens=1 skip=%lin%" %%a in (prueba.txt) do call :func %%a
:func
set var=%1
echo %var%
pause>nul
exit
Esta explicado en el mismo hilo, el ultimo post.
Y sobre lo de ordenar los tiempos lo veo imposible de hacer..
saludos
Pero mirando bien el código no es un cronómetro, es un contador. Aun así, el programa es muy util y muy bien detallado. Pero donde puedo conseguir un batch en donde me tome tiempos de inicio y fin de un proceso?
@Revol89
El post es del año 2008. Lee las reglas porfavor.
Tema cerrado,
Saludos