如果问题很简单,我很想道歉,但我很难理解批处理文件中的代码段。
以下代码中的/a
是什么,它的重要性及其作用是什么?
if %first%==1 set /a id=(%3-1) * 3
此处我理解id
是变量来存储值,%first%
是我从此变量获取值,但我无法理解/a
。
感谢您的时间
答案 0 :(得分:3)
set /a ...
表示算术表达式。
参考 Set:
算术表达式(SET / a)
要评估的表达式可以包括以下运算符:
+ Add set /a "_num=_num+5" += Add variable set /a "_num+=5" - Subtract (or unary)set /a "_num=_num-5" -= Subtract variable set /a "_num-=5" * Multiply set /a "_num=_num*5" *= Multiply variable set /a "_num*=5" / Divide set /a "_num=_num/5" /= Divide variable set /a "_num/=5" % Modulus set /a "_num=5%%2" %%= Modulus set /a "_num%%=5" ! Logical negation 0 (FALSE) ⇨ 1 (TRUE) and any non-zero value (TRUE) ⇨ 0 (FALSE) ~ One's complement (bitwise negation) & AND set /a "_num=5&3" 0101 AND 0011 = 0001 (decimal 1) &= AND variable set /a "_num&=3" | OR set /a "_num=5|3" 0101 OR 0011 = 0111 (decimal 7) |= OR variable set /a "_num|=3" ^ XOR set /a "_num=5^3" 0101 XOR 0011 = 0110 (decimal 6) ^= XOR variable set /a "_num=^3" << Left Shift. (sign bit ⇨ 0) >> Right Shift. (Fills in the sign bit such that a negative number always remains negative.) Neither ShiftRight nor ShiftLeft will detect overflow. <<= Left Shift variable set /a _num<<=2 >>= Right Shift variable set /a _num>>=2 ( ) Parenthesis group expressions set /a "_num=(2+3)*5" , Commas separate expressions set /a "_num=2,_result=_num*5"
...
算术表达式(SET / a)
将表达式放在&#34;引号&#34;对于简单的算术是可选的 使用逻辑运算符的任何表达式都需要。
任何返回小数结果的SET / A计算都将是 向下舍入到最接近的整数。
<强>示例:强>
SET /A "_result=2+4" (=6) SET /A "_result=5" (=5) SET /A "_result+=5" (=10) SET /A "_result=2<<3" (=16) { 2 Lsh 3 = binary 10 Lsh 3 = binary 10000 = decimal 16 } SET /A "_result=5%%2" (=1) { 5/2 = 2 + 2 remainder 1 = 1 }
在批处理脚本中,模数运算符(%)必须加倍 (%%)。
SET / A会将表达式中的任何字符串视为 环境变量名称。这允许你做算术 环境变量,无需键入任何%符号即可获得 值。
SET /A _result=5 + _MyVar
可以在一行中执行多次计算,方法是将每个计算分开 用逗号计算,例如:
_year=1999 Set /a _century=_year/100, _next=_century+1
数字必须都在32位有符号整数的范围内 数字(-2,147,483,648到2,147,483,647)来处理更大的数字 数字使用PowerShell或VBScript。前导零将指定八进制
数字值是十进制数,除非前缀为0x 十六进制数,0表示八进制数。
所以0x10 = 020 = 16十进制
八进制表示法可能会令人困惑 - 所有数字值都会启动 零被视为八进制,但08和09无效八进制 数字。例如,SET / a _month = 07将返回值7,但是SET / a _month = 09将返回错误。
有关其他Windows命令行命令的信息,请参阅An A-Z Index of the Windows CMD command line。
答案 1 :(得分:1)
您可以通过输入以下命令从命令提示符获取大多数命令的帮助:commandName /?
e.g。
set /?
for /?
http://www.computerhope.com/msdos.htm是dos命令的一个非常好的在线帮助。