2009-12-08 4 views
13

Ich entwickle eine CMD-Charge. Ich möchte etwas Mathe darin machen. Diese Formel: (x+1)100:yMath on Batch (Win)

So im Batch, x = %x%, and y = %y%. Ich weiß, wie man die Variablen setzt. Nun, wie kann Batch das berechnen? (WINDOWS CMD)

Benötige ich etwas extra?

(Ich brauche dies für die Nutzer von Windows XP bis 7 verfügbar sein)

+0

Sie wollen einen Prozentsatz berechnen, gegeben zwei Batch-Datei Variablen, 'x' und 'y'? –

Antwort

27

Der Set-Befehl unterstützt eine begrenzte Berechnung. In Ihrem Fall sollten Sie:

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

Run set /? vollständige Dokumentation zu sehen, was unterstützt wird. Der Schalter /a führt auch eine automatische variable Ersetzung durch, sodass Sie x anstelle von %x% verwenden können.

5
@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 Ausdrucks zu einer Variablen zugewiesen werden (das an, die % ‚s um Variablennamen in diesen Ausdrücken sind nicht erforderlich). Eine Liste der unterstützten Operatoren und Details finden Sie unter set /?.

Beachten Sie, dass Windows-Batchdateien Gleitkommaarithmetik nicht unterstützen. Wenn also ein Ausdrucksergebnis eine Bruchzahl ist, wird nur der ganzzahlige Teil gezählt. Zum Beispiel wird 3/2 als und 2/3 als ausgewertet.

2

Machen Sie keine Mathematik im Batch. Wenn Sie einen Prozentwert eingeben, haben Sie möglicherweise Dezimalstellen und der Stapel unterstützt keine Dezimalstellen. Verwenden Sie VBScript oder etwas Besseres.

untenstehenden Speichern als caculate.vbs

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 
+0

Ich brauche keine Dezimalzahlen für das, woran ich arbeite. –

+0

und BTW; Ich habe vergessen, dass es nicht x + 1, sondern y + 1 war. So wie (x * 100)/(y + 1) –

2
  • set /a (jede arithmatic)
  • set /a 2+2 Zugabe
  • set /a 2-2 Subtrahieren
  • set /a 2*2
  • Multiplikation
  • set /a 2/2
  • set /a 2^2 exponet

Verwendung Klammern und Klammern deviding die Eigenschaften der Gleichungen für die Ex zu zeigen. 2(2+2)=8 Zeigt Verteilungseigenschaft an.

+3

Diese Beispiele benötigen Anführungszeichen 'set/a" 2^2 "' braucht Anführungszeichen (ohne Anführungszeichen ist es nur 22) und '^' ist ein logisches XOR.Der letzte Fehler ist ein Fehler, weil ein Operator fehlt: '2 * (2 + 2)' = '8' – Zaq