2009-12-08 8 views
13

Je développe un lot CMD. Je veux faire des maths dedans. Cette formule: (x+1)100:yMathématiques par lots (win)

Donc en lot, x = %x%, and y = %y%. Je sais comment définir les variables. Maintenant, comment le lot peut-il calculer cela? (WINDOWS CMD)

Ai-je besoin de quelque chose de plus?

(j'ai besoin que ce soit disponible pour les utilisateurs de Windows XP à 7.)

+0

Vous voulez travailler un pourcentage, étant donné deux variables de fichier batch, « x » et « y »? –

Répondre

27

La commande set prend en charge un calcul limité. Dans votre cas, vous voulez:

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

Run set /? pour voir la documentation complète sur ce qui est pris en charge. Le commutateur /a effectue également la substitution automatique des variables. Vous pouvez donc utiliser x au lieu de %x%.

5
@echo off 

set x=42 
set y=5 

set /a z = 100 * x/y 

echo %z% 

La commande set /a vous permet d'attribuer le résultat d'une expression mathématique à une variable (à cela, les % « s autour des noms de variables dans ces expressions ne sont pas nécessaires). Voir set /? pour la liste des opérateurs pris en charge et des détails.

Notez que les fichiers batch Windows ne prennent pas en charge l'arithmétique à virgule flottante, donc si un résultat d'expression est un nombre fractionnaire, seule la partie entière sera compté. Par exemple, 3/2 évalue et 2/3 en tant que .

2

NE PAS faire les maths dans le lot. Si vous faites un pourcentage, vous pouvez avoir des décimales et le lot ne supporte pas les décimales (flottantes). Utilisez vbscript ou quelque chose de mieux.

enregistrer le dessous comme caculate.vbs

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

et sur la ligne de commande

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

Je n'ai pas besoin de décimales pour ce sur quoi je travaille. –

+0

et btw; j'ai oublié que ce n'était pas x + 1 mais y + 1. Donc, comme (x * 100)/(y + 1) –

2
  • set /a (tout arithmatic)
  • set /a 2+2 ajoutant
  • set /a 2-2 soustrayant
  • set /a 2*2 multiplier
  • set /a 2/2 deviding
  • set /a 2^2 exponet

supports d'utilisation et des parenthèses pour afficher les propriétés des équations par ex. 2(2+2)=8 Affiche la propriété distributive.

+3

Ces exemples ont besoin de guillemets 'set/a" 2^2 "' nécessite des guillemets (sans guillemets c'est juste 22) et '^' est logique XOR.Le dernier est une erreur car il manque un opérateur: '2 * (2 + 2)' = '8' – Zaq