Cálculo en un script .bat

Titi -  
cs_PaTaTe Mensajes publicados 1471 Fecha de registro   Estado Colaborador Última intervención   -
Buenas noches a todos,

me gustaría realizar cálculos en un script .bat. ¿Es viable? Si es así, ¿cómo puedo inicializar una variable y aumentarla? Gracias de antemano por su ayuda

TITI

2 respuestas

  1. floxi Mensajes publicados 153 Estado Miembro 94
     
    Hola,
    no necesitas inicializar tus variables, lo haces así:
    @echo off set /a variable=(2*5)/2 echo El resultado es %variable% pause


    También puedes priorizar tus cálculos gracias a los paréntesis.

    Si quieres más información, mira en Publicidad eliminada Moderación CCM
    Buena suerte

    Flox
    12
    1. X260
       
      ¿Y para las potencias?
      0
    2. yaourt39
       
      @echo off 
      :: Variable ::
      set nom=Calculadora
      set auteur=MexangaFR
      set ver=Alpha 1.0
      ::::::::::::::
      :: Código no protegido y servicio de ejemplo para principiantes ::
      title %nom% - %ver% por %auteur%
      :deb
      color F
      cls
      echo.
      echo [1] Sumar
      echo [2] Restar
      echo [exit] Salir
      echo.
      echo.
      echo.
      echo.
      set /p choice=Su elección:
      IF %CHOICE% equ 1 goto add
      IF %choice% equ 2 goto sous
      IF %choice% equ exit exit
      IF NOT DEFINED CHOICE goto deberror
      :deberror
      color C
      cls
      echo.
      echo [1] Sumar
      echo [2] Restar
      echo [exit] Salir
      echo.
      echo ::::::Se ha producido un error:::::
      echo ::::::Error1: %choice% no está disponible::::::
      echo.
      set /p choiceerror=Su elección:
      IF %CHOICEERROR% equ 1 goto add
      IF %choiceerror% equ 2 goto sous
      IF %choiceerror% equ exit exit
      IF NOT DEFINED CHOICE goto deberror2
      :deberror2
      color C
      cls
      echo.
      echo [1] Sumar
      echo [2] Restar
      echo [exit] Salir
      echo.
      echo ::::::Se ha producido un error:::::
      echo ::::::Error1: %choiceerror% no está disponible::::::
      echo.
      set /p choiceerror=Su elección:
      IF %CHOICEERROR% equ 1 goto add
      IF %choiceerror% equ 2 goto sous
      IF %choiceerror% equ exit exit
      IF NOT DEFINED CHOICE goto deberror
      goto deb
      :add
      CLS rem Añadido después del video
      echo.
      set /p add1=¿Qué número quiere sumar?
      set /p add2=¿Y?
      set /a add = %add1% + %add2%
      echo Resultado: %add1% + %add2% = %add%
      echo.
      echo [2] Restar
      echo [retour] Volver al inicio
      echo [exit] Salir
      echo.
      set /p choiceadd=:
      IF %CHOICEADD% EQU 2 (cls & goto sous)
      IF %CHOICEADD% EQU retour (cls & goto deb)
      IF %CHOICEADD% equ exit exit
      IF NOT DEFINED CHOICE goto deb
      goto deb
      :sous
      cls rem Añadido después del video
      echo.
      set /p sous1=¿Qué número quiere restar?
      set /p sous2=¿Y?
      set /a sous = %sous1% - %sous2%
      echo Resultado: %sous1% - %sous2% = %sous%
      echo.
      echo [2] Sumar
      echo [retour] Volver al inicio
      echo [exit] Salir
      echo.
      set /p choicesous=:
      IF %CHOICEADD% EQU 1 (cls & goto sous)
      IF %CHOICEADD% EQU retour (cls & goto deb)
      IF %CHOICEADD% equ exit exit
      IF NOT DEFINED CHOICE goto deb
      1
  2. gfdgdf
     
    no, no puedes

    la única forma es integrar en las máquinas donde el script se ejecute herramientas de GNU como expr (comando de unix)

    expr $TOTO + 1 para incrementar el valor de TOTO
    2
    1. grofwa Mensajes publicados 440 Estado Miembro 479
       
      Todo depende...
      Si trabajas bajo win2k o XP, puedes utilizar el comando extendido:

      SET /a toto=2+3 ECHO %toto%

      te devolverá 5

      Michael.

      No te preocupes por no ser notado; busca
      más bien hacer algo notable [Confucio]
      0
    2. cs_PaTaTe Mensajes publicados 1471 Fecha de registro   Estado Colaborador Última intervención   503
       
      Todo esto solo es válido para enteros, a partir del momento en que tienes números decimales las herramientas de Unix me parecen indispensables. A menos que existan soluciones, pero no las conozco ^^
      0
    3. poparnassus Mensajes publicados 462 Estado Miembro 31
       
      je desentierro, pero para calcular una potencia por lotes se hace así. ¡Creamos la función!
      ¡Nada es imposible! Su incapacidad para resolver un problema no significa que no sea factible.


      setlocal EnableDelayedExpansion

      set /P taille_mdp="el valor de la potencia que se aplicará:"

      echo taille mdp=!taille_mdp!

      set /P var_taille="introduzca el número a calcular"
      cls

      :puissance
      for /L %%a in (1,1,!taille_mdp!) do (
      set puissance=!puissance!*!var_taille!
      )
      ::contar número de cifras
      :compt_nbr_combinaison
      set /A compt_puissance+=1
      set var_puissance=!puissance:~%compt_puissance%,1!
      if not "!var_puissance!"=="" goto compt_nbr_combinaison


      set /A puissance_n=!puissance:~1,%compt_puissance%!

      echo !puissance_n!
      pause
      exit
      0
    4. cs_PaTaTe Mensajes publicados 1471 Fecha de registro   Estado Colaborador Última intervención   503
       
      Fuera de tema ya que este código siempre devuelve un entero... También hablaba del cálculo de números decimales (cualquiera que sea el operador), y eso el batch no sabe hacerlo de forma nativa! Confirmo lo que digo!

      Así que antes de hablar de la probable incapacidad de los demás, se lee bien el problema antes de dar una solución ^^

      Sin rencor :)
      0