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

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
X260
 
¿Y para las potencias?
0
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
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
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
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
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
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
poparnassus Mensajes publicados 462 Estado Miembro 31
 
0