Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: XXLuigiMario en 7 Junio 2012, 22:30 pm



Título: [BATCH] Problema Script Cuenta Regresiva
Publicado por: XXLuigiMario en 7 Junio 2012, 22:30 pm
Hola amigos de elhacker.net, soy nuevo aquí, y vengo con un problema, tengo hecho un script para una cuenta regresiva en batch pero se queda en el numero "9".

El script es este:

Código:
@echo off
title Cuenta Regresiva
rem Made by XXLuigiMario
:menu
set /p min=Escribe cuantos minutos durara la cuenta:
if %min% LSS 10 (goto minuto)
:minuto
set min=0%min%
goto segundo
:segundo
set seg=00
goto cuenta
:cuenta
cls
echo Tiempo Restante:
echo.
echo %min% min. %seg% seg.
call :restarsegundo
:restarsegundo
if %seg%==00 (call :restarminuto)
if %seg% LSS 9 (call :restarsegundocontinuar)
if %seg%==10 (call :restarsegundo2)
ping -n 2 0.0.0.0>nul
set /a seg=%seg% - 1
goto cuenta
:restarsegundocontinuar
ping -n 2 0.0.0.0>nul
set /a seg=%seg% - 1
goto cuenta
:restarsegundo2
ping -n 2 0.0.0.0>nul
set /a seg=%seg% - 1
set seg=0%seg%
goto cuenta
:restarminuto
if %min%==00 (goto cuentaacabada)
if %min% LSS 11 (call :restarminuto2)
ping -n 2 0.0.0.0>nul
set /a min=%min% - 1
set /a seg=%seg% + 59
goto cuenta
:restarminuto2
ping -n 2 0.0.0.0>nul
set /a min=%min% - 1
set min=0%min%
set /a seg=%seg% + 59
goto cuenta
:cuentaacabada
echo Cuenta regresiva terminada!
pause >nul
goto menu

Qualquier ayuda se agradece  :D


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: BatchianoISpyxolo en 8 Junio 2012, 15:50 pm
Se puede simplificar el code... pero ahí está mi intento... Deberías identar tu code...

Código
  1. ::Cuenta atrás
  2. ::Batchiano
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. :menu
  6. set /p h="Horas: "
  7. set /p m="Minutos: "
  8. set /p s="Segundos: "
  9. for %%z in (h,m,s) do if not defined %%z (
  10. call :formato
  11. )
  12. if %h% GEQ 0 (
  13. if %m% GEQ 0 (
  14. if %m% LEQ 59 (
  15. if %s% GEQ 0 (
  16. if %s% LEQ 59 (
  17. call :contador
  18. ) else (
  19. call :formato
  20. )
  21. ) else (
  22. call :fomato
  23. )
  24. ) else (
  25. call :formato
  26. )
  27. ) else (
  28. call :formato
  29. )
  30. ) else (
  31. call :formato
  32. )
  33. goto :eof
  34.  
  35. :contador
  36. cls
  37. if %h% GEQ 0 (
  38. if %m% GEQ 0 (
  39. if %s% GEQ 0 (
  40. for /l %%a in (!h!,-1,0) do (
  41. for /l %%b in (!m!,-1,0) do (
  42. for /l %%c in (!s!,-1,0) do (
  43. echo Contador: %%a:%%b:%%c
  44. ping localhost -n 2 > nul
  45. cls
  46. )
  47. set s=59
  48. )
  49. set m=59
  50. )
  51. )
  52. )
  53. )
  54. goto :eof
  55.  
  56. :formato
  57. echo Formato incorrecto. Vuelva a intentarlo
  58. pause>nul & cls & call :menu
  59.  


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: XXLuigiMario en 8 Junio 2012, 18:14 pm
Muchas gracias Batchiano :D, pero aun tengo un problema, yo quiero que si por ejemplo faltan cinco minutos, se vea asi: "00:05:00" no asi "0:5:0".
Lo he intentado con set m=0%m%, pero no me funciona :(
Alguien sabe como hacerlo?


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: Eleкtro en 11 Junio 2012, 04:36 am
Hola,

Aqui tienes mi versión de cosecha propia xD

PD: Funciona especificando minutos, Como se supone que querías... Y usa el formato que quieres (00:00:00).

Saludos.

(http://img189.imageshack.us/img189/8767/prtscrcapturepr.jpg)

(http://img32.imageshack.us/img32/6374/prtscrcapture2b.jpg)


Código
  1. @echo off
  2. Title Cuenta Regresiva
  3.  
  4. REM By Elektro H@cker
  5. REM Visita: WWW.ElHacker.Net
  6.  
  7. Setlocal enabledelayedexpansion
  8.  
  9. :MENU
  10. set /p TIMER=Escribe cuantos minutos durara la cuenta ^>^>
  11. If not defined TIMER (Goto :Menu)
  12. Echo "%TIMER%"| FINDSTR /I "[A-Z]" >NUL && Goto :Menu || (set /A total_sec=%TIMER%*60)
  13. If %total_sec% LSS 3600 (Set /A Horas=0, Minutos=%TIMER%, Segundos=0& Goto :Countdown) ELSE (Set /A Timer+=60)
  14. Set /A Horas=%Timer%-60 & Set /A Horas=!Horas!/60
  15. Set /A MINUTOS=%Timer%-60 & For /L %%X in (1,1,!HORAS!) Do (Set /A MINUTOS-=60)
  16. Set /A Segundos=0
  17.  
  18. :Countdown
  19. CLS
  20. For /L %%H in (%HORAS%,-1,0) Do (
  21. For /L %%M in (!MINUTOS!,-1,0) Do (
  22. For /L %%S in (!SEGUNDOS!,-1,0) Do (
  23. Echo %%H| FINDSTR "^[0-9][0-9]$" >NUL && SET "HO=%%H" || (Set HO=0%%H)
  24. Echo %%M| FINDSTR "^[0-9][0-9]$" >NUL && SET "MI=%%M" || (Set MI=0%%M)
  25. Echo %%S| FINDSTR "^[0-9][0-9]$" >NUL && SET "SE=%%S" || (Set SE=0%%S)
  26. Echo !HO!:!MI!:!SE!
  27. Ping -n 2 localhost >NUL
  28. CLS
  29. )
  30. If !SE!==00 (Set /A SEGUNDOS=59)
  31. )
  32. If !MI!==00 (Set /A MINUTOS=59)
  33. )
  34.  
  35. :FIN
  36. Echo Fin de la cuenta atras.


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: XXLuigiMario en 11 Junio 2012, 11:11 am
EleKtro H@cker, gracias por ayudarme con el script, me ha funcionado perfecto :D!


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: 987123564 en 14 Agosto 2016, 23:25 pm
Hola, he probado el código de @Elektro y si pongo 60 minutos empieza en 48 minutos. Yo no se batch así que no les puedo aconsejar ni corregir nada :-(


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: Eleкtro en 15 Agosto 2016, 03:10 am
Hola, he probado el código de @Elektro y si pongo 60 minutos empieza en 48 minutos. Yo no se batch así que no les puedo aconsejar ni corregir nada :-(

El código funciona correctamente al especificar 60 minutos:
(http://i.imgur.com/Kn9t1Tf.gif)

Es posible que estés haciendo algo mal, ¿modificaste el código original de alguna manera?

Saludos!


Título: Re: [BATCH] Problema Script Cuenta Regresiva
Publicado por: BALTA00 en 23 Junio 2017, 23:18 pm
Hola,

Aqui tienes mi versión de cosecha propia xD

PD: Funciona especificando minutos, Como se supone que querías... Y usa el formato que quieres (00:00:00).

Saludos.

(http://img189.imageshack.us/img189/8767/prtscrcapturepr.jpg)

(http://img32.imageshack.us/img32/6374/prtscrcapture2b.jpg)


Código
  1. @echo off
  2. Title Cuenta Regresiva
  3.  
  4. REM By Elektro H@cker
  5. REM Visita: WWW.ElHacker.Net
  6.  
  7. Setlocal enabledelayedexpansion
  8.  
  9. :MENU
  10. set /p TIMER=Escribe cuantos minutos durara la cuenta ^>^>
  11. If not defined TIMER (Goto :Menu)
  12. Echo "%TIMER%"| FINDSTR /I "[A-Z]" >NUL && Goto :Menu || (set /A total_sec=%TIMER%*60)
  13. If %total_sec% LSS 3600 (Set /A Horas=0, Minutos=%TIMER%, Segundos=0& Goto :Countdown) ELSE (Set /A Timer+=60)
  14. Set /A Horas=%Timer%-60 & Set /A Horas=!Horas!/60
  15. Set /A MINUTOS=%Timer%-60 & For /L %%X in (1,1,!HORAS!) Do (Set /A MINUTOS-=60)
  16. Set /A Segundos=0
  17.  
  18. :Countdown
  19. CLS
  20. For /L %%H in (%HORAS%,-1,0) Do (
  21. For /L %%M in (!MINUTOS!,-1,0) Do (
  22. For /L %%S in (!SEGUNDOS!,-1,0) Do (
  23. Echo %%H| FINDSTR "^[0-9][0-9]$" >NUL && SET "HO=%%H" || (Set HO=0%%H)
  24. Echo %%M| FINDSTR "^[0-9][0-9]$" >NUL && SET "MI=%%M" || (Set MI=0%%M)
  25. Echo %%S| FINDSTR "^[0-9][0-9]$" >NUL && SET "SE=%%S" || (Set SE=0%%S)
  26. Echo !HO!:!MI!:!SE!
  27. Ping -n 2 localhost >NUL
  28. CLS
  29. )
  30. If !SE!==00 (Set /A SEGUNDOS=59)
  31. )
  32. If !MI!==00 (Set /A MINUTOS=59)
  33. )
  34.  
  35. :FIN
  36. Echo Fin de la cuenta atras.

¿Qué se necesitaría agregar a ese código para que el usuario presionando una tecla interrumpa el conteo y pase a la siguiente línea?