[Duda] BATCH : Cronometro con Historial de Tiempo

Iniciado por Mudereded401, 7 Abril 2019, 19:26 PM

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

Mudereded401

 Buenas! ;D

Hace tiempo estaba buscando la forma de crear un historial de tiempo con Batch Para cada dia, Pero no pude hacerlo  :(.

Queria que a cada segundo que pasa en el cronometro, Lo registre dentro de un archivo de texto pero que no se multiplique uno bajo el otro (Que es por eso que no pude), Alguien me dice como puedo implementarselo a mi cronometro?.

Aqui abajo les dejo el script y me dicen que tal está.  :huh:

------Inicio Del Codigo-------------------------------------------------------------------------

@echo off
@mode con cols=30 lines=10
cls
color 0a

set/a s=1

echo.
echo Para Pausar El Cronometro
echo Utiliza (Ctrl+C)
echo.
echo Pulsa cualquier tecla para
echo iniciar
pause>nul

:inicio
cls
echo.
echo       °±² Cronometro ²±°
echo.
echo Segundos : %s%
echo Minutos : %m%
echo Horas : %h%
timeout/t 1 /nobreak>nul
set/a s+=1
set/a m=s
set/a m/=60
set/a h=m
set/a h/=60
goto inicio

------Fin del Codigo-----------------------------------------------------------------------------

Si alguien sabe porfa diganme en los comentarios  ;)
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

Mudereded401

PD.disculpen si hizo falta el cuadro donde ponen los codigos, Pero soy nuevo en el foro y este es mi primer tema :u
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

Segadorfelix

Hola Mudered, creo que debería ser "set /a s=0", pero dado que son segundos, no creo que sea muy importante.

El código, es bueno. Es sencillo y cumple su función.

No entiendo lo de multiplicar.

supongo que sería:


set/a s+=1
echo %s%>segundos.txt


el '>' resetearía el archivo, por cada ciclo del bucle, introduciendo el valor de 's' hasta el corte.

PD1: En cuanto a como poner el código, arriba hay una opción que es un '#' esa permite colocar el código.

PD2: Dale un vistazo a mi cronometro, funciona distinto, pero alguna parte del código podría ayudar https://foro.elhacker.net/scripting/cronometro_batch-t494403.0.html

**Aincrad**

Bueno ya te respondieron arriba, el tienes q corregir lo de los segundos, siguen aumentando cuando llegan a 60.

Y Respondiendo a tu pregunta :

Código (bash) [Seleccionar]
@echo off
@mode con cols=30 lines=10
if exist Registro.txt del Registro.txt >nul
cls
color 0a

set/a s=1

echo.
echo Para Pausar El Cronometro
echo Utiliza (Ctrl+C)
echo.
echo Pulsa cualquier tecla para
echo iniciar
pause>nul

:inicio
cls
echo.
echo       °±² Cronometro ²±°
echo.
echo Segundos : %s%
echo Minutos : %m%
echo Horas : %h%
timeout/t 1 /nobreak>nul
set/a s+=1
set/a m=s
set/a m/=60
set/a h=m
set/a h/=60
(
  echo %s%
   )>Registro.txt
goto inicio




Mudereded401

#4
Buenas hace rato estaba intentando hacerlo mas complejo, pero mas entendible, Osea como dijo el we, Que no pasara de los 60 segundos y resulta que me llevo casi 1 hora  :xD

Pero creo que alfin lo termine y quiero que vean como me salió, No le agregue el Historial porque es muy facil añadirlo y ahi veran ustedes si lo añaden o no, Pero diganme si quedo bien o si Tiene Errores...

@echo off
title Cronometro
cls
color 0a
@mode con cols=20 lines=10

set/a s=1
set/a h=1

echo Pulsa Cualquier
echo Tecla Para Iniciar
echo El Cronometro.
echo.
echo Para Pausarlo
echo Simplemente Utiliza
echo (CTRL+C)
echo.
pause>nul

:a
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:00:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto b) else goto a

:b
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:00:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 (goto revalue-a) else goto b

:revalue-a
set/a s=1
set/a m+=1
goto c

:c
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:0%m%:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto d) else goto c

:d
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:0%m%:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 goto revalue-a
if %m%==10 (revalue-b) else goto d

:revalue-b
set/a s=1
set/a m+=1
goto e

:e
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:%m%:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto f) else goto e

:f
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      00:%m%:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 goto revalue-b
if %m%==60 (goto PH) else goto f


:--------------------Horas---------------


:PH
set/a s=1
set/a m=1
set/a h+=1
goto g

:revalue-h
set/a s=1
set/a m+=1
goto i

:revalue-now
set/a s=1
set/a m+=1
goto k



:g
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:00:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto h) else goto g

:h
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:00:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 (goto revalue-h) else goto h

:i
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:0%m%:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto j) else goto i

:j
cls
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:0%m%:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 goto revalue-h
if %m%==10 (goto k) else goto j

:k
cls
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:%m%:0%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==10 (goto l) else goto k

:l
cls
cls
echo.
echo °±² Cronometro ²±°
echo.
echo      0%h%:%m%:%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
if %s%==60 goto revalue-now
if %m%==60 (goto PH) else goto l


No llevo mas de 1 semana en batch, y Creo que todavia me hace falta aprender mas Y quiero Saber si voy bien Como lo estoy haciendo o hay una forma mas Facil.
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

Segadorfelix

#5
Hay demasiados 'saltos' en tu segundo código. Sirve. Pero podría haberse simplificado muchísimo.

Use solo un salto, goto a, y varios condicionales. El codigo que colocaste tiene 188, y  lineas y este tiene 47.

Ambos hacen lo mismo, la diferencia es el codigo:
*Este usa condicionales para ahorrar saltos (por ejemplo los :revalue, todos eran iguales, no había necesidad de repetirlos)
*El texto base no cambia, usando una asignación particular de variables, que evitan este problema(el que set /a variable=09 por ejemplo tire error). Sin saltos adicionales.

Código (dos) [Seleccionar]

@echo off
cls
title Crono (T_T)
color 0a
mode con cols=31 lines=10

set/a s=0
set/a m=0
set/a h=0

echo Pulsa Cualquier
echo Tecla Para Iniciar
echo El Cronometro.
echo.
echo Para Pausarlo
echo Simplemente Utiliza
echo (CTRL+C)
echo.
pause>nul

mode con cols=31 lines=5

:a
if %s%==60 (
set /a s=0
set /a m+=1
)
if %s% LSS 10 (set a=:0) else (set a=:)
if %m%==60 (
set /a m=0
set /a h+=1
)
if %m% LSS 10 (set b=:0) else (set b=:)
if %h%==24 (
set /a h=0
)
if %h% LSS 10 (set "c= 0") else (set "c= ")

cls
echo.
echo °±²     Cronometro    ²±°
echo.
echo            %c%%h%%b%%m%%a%%s%
echo.
timeout/t 1 /nobreak>nul
set/a s+=1
goto a


Si añades este código al inicio, el cronometro se ejecutara en otra ventana al ser llamado por el cmd.

Código (dos) [Seleccionar]

@echo off
if "%1"=="12" goto c
start %~n0 12
exit /B
:c
cls


Recomiendo que leas el tuto de programación avanzada en batch https://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html

Mudereded401

Vale gracias por la ayuda, Todavia soy un nuevo en batch y creo que no entiendo bien tu codigo xd Pero ahi ire aprendiendo, Apenas estos son mis primeros .bat y quiero hacerlos como tu. Mas facil y mas rapidos. Igual gracias por tu ayuda.  ;)
Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle

Segadorfelix

Cita de: Mudereded401 en  9 Abril 2019, 13:25 PM
Vale gracias por la ayuda, Todavia soy un nuevo en batch y creo que no entiendo bien tu codigo xd Pero ahi ire aprendiendo, Apenas estos son mis primeros .bat y quiero hacerlos como tu. Mas facil y mas rapidos. Igual gracias por tu ayuda.  ;)

Hago la recomendación 'obligatoria' de siempre, hay lenguajes de scriping más adecuados, para aprender, como autoit o si se quiere consola, python o ruby.

Pero aprender Batch no hace ningun mal y ayuda a que uno se maneje mejor por Windows.

Hay formas más rápidas y eficientes que la mía, podría asegurar que con For, tal vez podría haber hecho el script más eficiente.

Es solo leer los post 'clavados en Scriping', allí, esta la mayor parte de la información. Y consultar los comandos en la consola con Help y con [comando] /?

SaluDos!