3 programas en batch
1. Años bisiestos
Introduces una fecha y calcula si el año es bisiesto y los dias que tiene el mes.
@echo off
:principio
cls
set/p fecha= inserte la fecha(dd,mm,aaaa)
if not defined fecha (goto principio)
set anio=%fecha:~-4%
set mes=%fecha:~-7,2%
set mes=%mes:,=0%
:a
set/a res1=%anio%/400
set/a res2=%res1%*400
if %res2%==%anio% (set var=si && goto siguiente) else (goto b)
:b
set/a res3=%anio%/100
set/a res4=%res3%*100
if %res4%==%anio% (set var=no && goto siguiente) else (goto c)
:c
set/a res5=%anio%/4
set/a res6=%res5%*4
if %res6%==%anio% (set var=si && goto siguiente) else (set var=no && goto siguiente)
:siguiente
if %mes%==01 (set mes=%mes:01=enero% && set dias=31 && goto final)
if %mes%==02 (goto febr)
if %mes%==03 (set mes=%mes:03=marzo% && set dias=31 && goto final)
if %mes%==04 (set mes=%mes:04=abril% && set dias=30 && goto final)
if %mes%==05 (set mes=%mes:05=mayo% && set dias=31 && goto final)
if %mes%==06 (set mes=%mes:06=junio% && set dias=30 && goto final)
if %mes%==07 (set mes=%mes:07=julio% && set dias=31 && goto final)
if %mes%==08 (set mes=%mes:08=agosto% && set dias=31 && goto final)
if %mes%==09 (set mes=%mes:09=septiembre% && set dias=30 && goto final)
if %mes%==10 (set mes=%mes:10=octubre% && set dias=31 && goto final)
if %mes%==11 (set mes=%mes:11=noviembre% && set dias=30 && goto final)
if %mes%==12 (set mes=%mes:12=diciembre% && set dias=31 && goto final) else (goto mes)
:febr
if %var%==si (
set mes=%mes:02=febrero%
set dias=29
goto final
) else (set mes=%mes:02=febrero% && set dias=28 && goto final)
:final
echo el año %anio% %var% es bisiesto
echo %mes% del año %anio% tiene %dias% dias
pause
goto principio
2. Calculadora
Con esta calculador podemos calcular las cuatro operaciones básicas (suma,resta,multiplicacion,division) y potencias.
Funciona con el keyboard.exe.
@echo off
:ini
title CALCULADORA
mode con cols=29 lines=29
color 1f
if not exist keyboard.exe (goto key)
:menu
cls
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º MENU º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Sumar º º 1 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Restar º º 2 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Multiplicar º º 3 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Dividir º º 4 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Potencia º º 5 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ÉÍÍÍ»
echo º Salir º º 6 º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍͼ
keyboard.exe
if %errorlevel%==49 (goto suma)
if %errorlevel%==50 (goto resta)
if %errorlevel%==51 (goto mul)
if %errorlevel%==52 (goto div)
if %errorlevel%==53 (goto potencia)
if %errorlevel%==54 (
cls && echo saliendo...
del "keyboard.exe"
ping localhost -n 10>nul
goto:eof
) else (goto menu)
:suma
cls
set/p var=
if not defined var (goto suma)
echo +
set/p var2=
if not defined var2 (goto suma)
set/a res=%var%+%var2%
echo el resultado es %res%
goto sq
:sq
set/p que=desea seguir calculando? s/n
if not defined que (goto sq)
if %que%==s (goto s2) else (goto menu)
:s2
cls
echo %res%
echo +
set/p var3=
set/a res=%res%+%var3%
echo el resultado es: %res%
goto sq
:resta
cls
set/p var=
if not defined var (goto resta)
echo -
set/p var2=
if not defined var2 (goto resta)
set/a res=%var%-%var2%
echo el resultado es %res%
goto rq
:rq
set/p que=desea seguir calculando? s/n
if not defined que (goto rq)
if %que%==s (goto r2) else (goto menu)
:r2
cls
echo %res%
echo -
set/p var3=
set/a res=%res%-%var3%
echo el resultado es: %res%
goto rq
:mul
cls
set/p var=
if not defined var (goto mul)
echo x
set/p var2=
if not defined var2 (goto mul)
set/a res=%var%*%var2%
echo el resultado es %res%
goto mq
:mq
set/p que=desea seguir calculando? s/n
if not defined que (goto mq)
if %que%==s (goto m2) else (goto menu)
:m2
cls
echo %res%
echo x
set/p var3=
set/a res=%res%*%var3%
echo el resultado es: %res%
goto mq
:div
cls
set/p var=
if not defined var (goto div)
echo /
set/p var2=
if not defined var2 (goto suma)
set/a res=%var%/%var2%
echo el resultado es %res%
goto dq
:dq
set/p que=desea seguir calculando? s/n
if not defined que (goto dq)
if %que%==s (goto d2) else (goto menu)
:d2
cls
echo %res%
echo /
set/p var3=
set/a res=%res%/%var3%
echo el resultado es: %res%
goto dq
:potencia
setlocal enabledelayedexpansion
cls
set /p base=base:
if not defined base (goto potencia)
set /p exp=exponente:
if not defined exp (goto potencia)
set res=%base%
if %exp%==0 (echo el resultado es: 1 && goto pq) else (
for /l %%A IN (2,1,%exp%) DO (set /a res=!res!*%base%)
)
echo el resultado es: %res%
:pq
set/p que=desea seguir calculando? s/n
if %que%==s (goto potencia) else (goto menu)
:Key
(
echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.
)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
ren keyboard.dat "keyboard.exe" >nul
goto ini
3. Cronometro
Un cronometro que tiene cuenta ascendente y cuenta descendente.
@echo off
mode con cols=34 lines=20
title Cronometro en BATCH
color 2e
:menu
cls
echo %date%
echo CRONOMETRO
echo.
echo 1.Cuenta Ascendente
echo 2.Cuenta Descendente
echo 3.Salir del programa
echo.
set /p opc= pulse un numero:
if not defined opc (goto menu)
if %opc%==1 (goto asc)
if %opc%==2 (goto des)
if %opc%==3 (echo adios&pause>nul&goto:eof) else (goto menu)
:asc
cls
echo Principio:
set /p seg=
if not defined seg (goto asc)
if %seg% LEQ 0 (goto asc)
echo Final:
set /p seg2=
if not defined seg2 (goto asc)
if %seg2% LEQ %seg% (goto asc)
cls
:a
set var=%time:~6,2%
set b=%var%
:b
set var=%time:~6,2%
if %var%==%b% (goto b) else (
set /a seg=%seg% + 1
echo %seg%
if %seg%==%seg2% (pause>nul&goto menu) else (goto a)
)
:des
cls
set /p num=Principio:
if not defined num (goto des)
if %num% LEQ 0 (goto des)
set /p num2=Final:
if not defined num2 (goto des)
if %num2% GTR %num% (goto des)
if %num2% LEQ 0 (goto des)
cls
:c
set var=%time:~6,2%
set b=%var%
:d
set var=%time:~6,2%
if %var%==%b% (goto d) else (
set /a num=%num% - 1
echo %num%
if %num%==%num2% (pause>nul&goto menu) else (goto c)
)
Espero que os sirvan los codigos.
