Autor
|
Tema: [Duda] BATCH : Cronometro con Historial de Tiempo (Leído 1,062 veces)
|
Mudereded401
Desconectado
Mensajes: 95
Puedes llamarme M401.
|
Buenas!  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á.  ------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 
|
|
|
En línea
|
Nunca escupas para arriba, Ni contra el viento. Nunca te mojes por alguien que siempre está seco.
|
|
|
Mudereded401
Desconectado
Mensajes: 95
Puedes llamarme M401.
|
PD.disculpen si hizo falta el cuadro donde ponen los codigos, Pero soy nuevo en el foro y este es mi primer tema :u
|
|
|
En línea
|
Nunca escupas para arriba, Ni contra el viento. Nunca te mojes por alguien que siempre está seco.
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
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
|
|
|
En línea
|
|
|
|
**Aincrad**
Desconectado
Mensajes: 510
|
Bueno ya te respondieron arriba, el tienes q corregir lo de los segundos, siguen aumentando cuando llegan a 60. Y Respondiendo a tu pregunta : @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
|
|
|
En línea
|
|
|
|
Mudereded401
Desconectado
Mensajes: 95
Puedes llamarme M401.
|
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  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.
|
|
« Última modificación: 8 Abril 2019, 23:32 pm por Mudereded401 »
|
En línea
|
Nunca escupas para arriba, Ni contra el viento. Nunca te mojes por alguien que siempre está seco.
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
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. cls color 0a mode con cols=31 lines=10 :a ) ) ) cls
Si añades este código al inicio, el cronometro se ejecutara en otra ventana al ser llamado por el cmd. start %~n0 12 :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
|
|
« Última modificación: 9 Abril 2019, 03:30 am por Segadorfelix »
|
En línea
|
|
|
|
Mudereded401
Desconectado
Mensajes: 95
Puedes llamarme M401.
|
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. 
|
|
|
En línea
|
Nunca escupas para arriba, Ni contra el viento. Nunca te mojes por alguien que siempre está seco.
|
|
|
Segadorfelix
Desconectado
Mensajes: 157
|
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!
|
|
|
En línea
|
|
|
|
|
|