^ -二进制按位“异”
| -二进制按位“或”
= *= /= %= += -= -算数赋值
&= ^= |= <<= >>= -二进制运算赋值
, -表达式分隔符
如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。除十六进制有 0x 前缀, 八进制有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。
上面这些是系统帮助里的内容,看着是不是有点晕,没关系我来简单解释一下:set的/A参数就是让SET可以支持数学符号进行加减等一些数学运算!
注意:一般的运算常为十进制运算,如果数字字符串最左边为0,将被认为是八进制,从而出错。比如,0812之类的数字不能参与十进制运算,转换方法为:10812-10000
例:
| set aa=0812 set /a aa=1%aa%-10000 echo %aa% |
结果为:812
例:
| @echo off set /p input=请输入计算表达式: set /a var=%input% echo 计算结果:%input%=%var% pause |
上面的例子是龙卷风设计的,很好用哟,请看下面几个运算过程:
注意:DOS计算只能进行整数运算,精确到整数
请输入计算表达式:1+9+20+30-10
计算结果:1+9+20+30-10=50
请按任意键继续. . .
请输入计算表达式:10/3 #除法只能精确到整数
计算结果:10/3=3
请按任意键继续. . .
请输入计算表达式:-100+62 #负数
计算结果:-100+62=-38
请按任意键继续. . .
请输入计算表达式:100%3 #求余数
计算结果:100%3=1
请按任意键继续. . .
注意:以上的求余数运算符%在批处理程序中必须写成%%
请输入计算表达式:(25+75)*2/(15+5) #括号
计算结果:(25+75)*2/(15+5)=10
请按任意键继续. . .
请输入计算表达式:1234567890*9876543210 #范围
无效数字。数字精确度限为 32 位。
计算结果:1234567890*9876543210=
请按任意键继续. . .
注意:上面的计算过程显示,DOS计算只能精确到32位,这个32位是指二进制32位,其中最高位为符号位(0为正,1为负),低位31位为数值。31个 1换成十进制为2147483647,所以DOS计算的有效值范围是-2147483648至2147483647,超出该数值范围时计算出错,请看下面 的计算过程:









