2009-12-08 9 views
13

Estoy desarrollando un lote de CMD. Quiero hacer algunas matemáticas en eso. Esta fórmula: (x+1)100:yMatemáticas en lote (ganar)

Por lo tanto en el lote, x = %x%, and y = %y%. Sé cómo configurar las variables. Ahora, ¿cómo puede calcular esto por lotes? (WINDOWS CMD)

¿Necesito algo extra?

(necesito que esto sea disponible para los usuarios de Windows XP a 7.)

+0

¿Desea calcular un porcentaje, dadas dos variables de archivo por lotes, 'x' e 'y'? –

Respuesta

27

El comando conjunto soporta algún cálculo limitada. En su caso, usted quiere:

set /a result=(100*x)/y 

Run set /? para ver la documentación completa sobre lo que es compatible. El conmutador /a también hace la subscripción variable automática, por lo que puede usar x en lugar de %x%.

5
@echo off 

set x=42 
set y=5 

set /a z = 100 * x/y 

echo %z% 

El comando set /a le permite asignar el resultado de una expresión matemática de una variable (por lo que no se requieren los % 's alrededor de nombres de variables en estas expresiones). Consulte set /? para obtener la lista de operadores compatibles y detalles.

Tenga en cuenta que los archivos por lotes de Windows no son compatibles con la aritmética de coma flotante, por lo que si el resultado de una expresión es un número fraccionario, solo se contará la parte entera. Por ejemplo, 3/2 evalúa como y 2/3 como .

2

NO haga matemáticas en lote. Si está haciendo un porcentaje, puede tener decimales y el lote no admite decimales (flotante). Use vbscript o algo mejor.

Guardar como el siguiente caculate.vbs

Set objFS=CreateObject("Scripting.FileSystemObject") 
Set objArgs = WScript.Arguments 
x = objArgs(0) 
y = objArgs(1) 
WScript.Echo (x + 1) * 100/y 

y en la línea de comandos

c:\test> cscript //nologo calculate.vbs 4 5 
+0

no necesito decimales para lo que estoy trabajando. –

+0

y por cierto; Olvidé que no era x + 1 sino y + 1. Así como (x * 100)/(y + 1) –

2
  • set /a (cualquier aritmética)
  • set /a 2+2 añadiendo
  • set /a 2-2 restando
  • set /a 2*2 multiplicando
  • set /a 2/2 deviding
  • set /a 2^2 Exponet

soportes de uso y paréntesis para mostrar las propiedades de las ecuaciones para ex. 2(2+2)=8 Muestra propiedad distributiva.

+3

Estos ejemplos necesitan citas 'set/a" 2^2 "' necesita comillas (sin comillas es solo 22) y '^' es XOR lógico.El último es un error porque le falta un operador: '2 * (2 + 2)' = '8' – Zaq