數值計算
批處理裡面的數值計算功能較弱,只能夠進行整型計算,忽略浮點數的小數部分;同時數值計算的範圍也受限於系統位數,對於目前較為常見的32位機來說,數值計算能處理的數值範圍為0x80000000h~0x7FFFFFFFh,即-2147483648~+2147483647。
數值計算需要使用set命令,具體格式為“set /a expression”。其中,expression代表計算表示式,計算表示式跟C語言裡面的表示式基本上完全一致。set支援的運算子也跟C語言裡面的一樣,只是沒有了増一減一。set支援的運算子及優先順序排序如下:
=========================================
() - 分組
! ~ - - 一元運算子(邏輯非、按位非、取負)
* / % - 算數運算子(乘、除得商、除得餘數,即取餘)
+ - - 算數運算子(加、減)
<< >> - 邏輯移位(左移一位、右移一位)
& - 按位“與”
^ - 按位“異”
| - 按位“或”
= *= /= %= += -= - 賦值
&= ^= |= <<= >>=
, - 表示式分隔符(set可一次處理多個表示式)
=========================================
我們知道,批處理中取變數的值是需要用%或者!的,而在set /a 中,直接用變數名稱即可取得變數的值。另外,set支援八進位制(數字字首0)、十進位制(數字無字首)和十六進位制(數字字首0x),且支援不同進位制之間的計算,如set /a a=123+0123+0x123,計算及顯示結果為十進位制。
@echo off set /a a=123+0123+0x123 echo %a% pause