Math auf Batch (win)
-
18-09-2019 - |
Frage
Ich entwickle eine CMD Charge. Ich mag es etwas Mathematik zu tun. Diese Formel: (x+1)100:y
So in Batch, x = %x%, and y = %y%
. Ich weiß, wie die Variablen zu setzen. Nun, wie können diese Charge berechnen? (WINDOWS CMD)
Muss ich etwas Besonderes?
(Ich muss das 7 für Benutzer von Windows XP zur Verfügung stehen.)
Lösung
Der Set-Befehl unterstützt eine begrenzte Berechnung. In Ihrem Fall, Sie wollen:
set /a result=(100*x)/y
Ausführen set /?
um zu sehen, eine vollständige Dokumentation, was unterstützt wird. Der /a
Schalter funktioniert die automatische Variablensubstitution, so dass Sie x
statt %x%
verwenden können.
Andere Tipps
@echo off
set x=42
set y=5
set /a z = 100 * x / y
echo %z%
Der set /a
Befehl können Sie das Ergebnis eines mathematischen Ausdruck zu einer Variablen zugewiesen werden (dabei werden die %
der um Variablennamen in diesem Ausdrücken nicht erforderlich). Siehe set /?
für die Liste der unterstützten Operatoren und Details.
Beachten Sie, dass Windows-Batch-Dateien unterstützen keine Gleitkomma-Arithmetik, so dass, wenn ein Ausdruck Ergebnis eine gebrochene Zahl ist, wird nur der ganzzahlige Teil gezählt wird. Zum Beispiel: 3/2 wertet als 1 und 2/3 als 0 .
NICHT tun Mathe im Batch. Wenn Sie Prozent tun, könnten Sie Dezimalzahlen und Batch nicht Dezimalstellen unterstützen. (Floating). Verwenden Sie vbscript oder etwas besser.
die unten als caculate.vbs speichern
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
x = objArgs(0)
y = objArgs(1)
WScript.Echo ( x + 1 ) * 100 / y
und auf Befehlszeile
c:\test> cscript //nologo calculate.vbs 4 5
-
set /a
(any arithmatic) -
set /a 2+2
Hinzufügen -
set /a 2-2
Subtraktionseinheit -
set /a 2*2
Vervielfachungs -
set /a 2/2
deviding -
set /a 2^2
exponet
Verwendung Klammern und Klammern, die Eigenschaften der Gleichungen zeigen
für ex. 2(2+2)=8
Zeigt distributive Eigenschaft.