Autor
|
Tema: Contador (cuenta atrás) (Leído 4,361 veces)
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
Pues he implementado una cuenta atrás en Batch... segurísimamente ya esté hecho... pero me apetecía pensar como hacerlo... opiniones... mejoras... aplicaciones para la cuenta atrás... ideas... críticas constructivas... todo bienvenido Operadores lógicos... ::Cuenta atrás ::Batchiano :menu ) ) ) ) ) ) :contador cls echo Contador: %%a: %%b: %%c ping localhost -n 2 > nul cls ) ) ) ) ) ) :formato echo Formato incorrecto. Vuelva a intentarlo
|
|
« Última modificación: 7 Abril 2012, 10:19 am por Batchiano »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
críticas constructivas... mejoras...
Si quieres mejorar el code puedes hacer de el una función (Además de simplificarlo). Aqui tienes un ejemplo: :: Contador.bat :: By Elektro H@cker :: Visita Foro.ElHacker.Net :Menu Set /P "H=Horas: " && Set /P "M=Minutos: " && Set /P "S=Segundos: " Echo !H!!M!!S! | Findstr /I "[A-Z]" >NUL For /F "Tokens=1-3 delims=:" %%a in (' Echo %~1' ) Do (Set /A H= %%a, M= %%b, S= %%c) || (Goto : ERROR) ) :TimeLoop Cls Echo Contador: %h%: %m%: %s% Ping -n 2 Localhost 1 >Nul) :Error Echo: Formato incorrecto. Vuelva a intentarlo... :End Echo Fin de la cuenta atras.
Modo de empleo: Contador.bat [Horas]:[Minutos]:[Segundos] Salu2.
|
|
« Última modificación: 7 Abril 2012, 13:12 pm por EleKtro H@cker »
|
En línea
|
|
|
|
ELVJop
Desconectado
Mensajes: 132
|
para sacarle el máximo rendimiento al code lo dejaría así: @Echo OFF Setlocal EnableDelayedexpansion :Menu IF "%~1" EQU "" ( Set /P H=Horas: Echo !H! | Findstr /I "[A-Z]" >NUL IF !Errorlevel! EQU 0 (Goto :ERROR) Set /P M=Minutos: Echo !M! | Findstr /I "[A-Z]" >NUL IF !Errorlevel! EQU 0 (Goto :ERROR) Set /P S=Segundos: ) Else ( For /F "Tokens=1-3 delims=:" %%a in ('Echo %~1') Do (Set /A H=%%a, M=%%b, S=%%c) || (Goto :ERROR) ) :TimeLoop Cls For /F %%? in ('Echo %h%:%m%:%s%') Do ( IF !H! LSS 0 (Goto :End) IF !S! EQU 0 (Set /A S=60, M-=1) IF !M! LSS 0 (Set /A H-=1, M=59, S=60) Set /A S-=1 Echo Contador: %h%:%m%:%s% Ping -n 2 Localhost 1>Nul Goto :TimeLoop ) :End Echo Fin de la cuenta atras. echo. echo Desea volver a iniciar el contador? echo. echo Teclee el numero correspondiente y pulse Enter echo. echo 1. Si echo 2. No set /P pregunta= if %pregunta%==1 goto :menu2 if %pregunta%==2 goto :salir IF !Errorlevel! EQU 1 (Goto :ERROR2)
:Error Echo: Incorrecto vuelva a probar... goto :error2 :Error2 cls echo Desea volver a iniciar el contador? echo. echo Teclee el numero correspondiente y pulse Enter echo. echo 1. Si echo 2. No set /P pregunta= if %pregunta%==1 goto :menu2 if %pregunta%==2 goto :salir IF !Errorlevel! EQU 1 (Goto :ERROR2)
:salir exit
PD: Electro hacker no revisaste tu propio code no dega leer lo echo del error y del end
|
|
« Última modificación: 8 Abril 2012, 22:08 pm por ELVJop »
|
En línea
|
El dia 3 de mayo esta cuenta sera borrada.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
No hombre, Si que lo revisé, Se cierra porque lo abres manualmente el Bat. Está pensado para llamar al Bat desde otro Bat o usandolo como expliqué. Fijate en los códigos de salida del exit. Esta parte de tu code se puede simplificar un poco más: :End Echo Fin de la cuenta atras. echo Desea volver a iniciar el contador? echo Teclee el numero correspondiente y pulse Enter :Error2 cls echo Desea volver a iniciar el contador? echo Teclee el numero correspondiente y pulse Enter
Choice /M "Desea volver a iniciar el contador?"
Salu2!
|
|
« Última modificación: 8 Abril 2012, 18:54 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
|