2009-12-08 59 views
13

我正在開發一個CMD批處理。我想在其中做一些數學。這個公式:(x+1)100:y批處理數學(勝利)

所以在批處理中,x = %x%, and y = %y%。我知道如何設置變量。現在,批量如何計算? (WINDOWS CMD)

我需要額外的東西嗎?

(我需要這是可用於Windows XP的用戶7)

+0

你想制定一個百分比,給出兩個批處理文件變量'x'和'y'? – 2009-12-08 19:14:28

回答

27

set命令支持一些有限的計算。在你的情況下,你想要:

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

運行set /?查看關於支持的完整文檔。 /a交換機也會自動變量替換,因此您可以使用x而不是%x%

5
@echo off 

set x=42 
set y=5 

set /a z = 100 * x/y 

echo %z% 

set /a命令可以分配一個數學表達式,以變量的結果(在該圍繞在這些表達式中的變量名的%的不必需的)。請參閱set /?以獲取支持的操作員列表和詳細信息。

請注意,Windows批處理文件不支持浮點運算,因此如果表達式結果是小數,則只會計算整數部分。例如,3/2評估爲和2/3作爲。

2

不要數學批量。如果你正在做百分比,你可能有小數,批次不支持小數(浮動)。使用VBScript或更好的東西。

保存如下面caculate.vbs

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

和命令行

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

我不需要小數的工作。 – 2009-12-10 18:58:33

+0

和btw;我忘了它不是x + 1,而是y + 1。所以像(x * 100)/(y + 1) – 2009-12-10 18:59:49

2
  • set /a(任何arithmatic)
  • set /a 2+2加入
  • set /a 2-2減去
  • set /a 2*2乘以
  • set /a 2/2 deviding
  • set /a 2^2 exponet

使用括號和括號顯示的公式 爲前的屬性。 2(2+2)=8顯示分配屬性。

+3

這些例子需要quotes'set/a「2^2」'需要引號(不含引號只有22),而'^'是邏輯異或。最後一個是錯誤的,因爲它缺少一個運算符:'2 *(2 + 2)'='8' – Zaq 2014-05-30 14:22:20