/ a在批处理文件中的重要性

时间:2015-01-21 09:45:34

标签: batch-file cmd

如果问题很简单,我很想道歉,但我很难理解批处理文件中的代码段。

以下代码中的/a是什么,它的重要性及其作用是什么?

if %first%==1 set /a id=(%3-1) * 3

此处我理解id是变量来存储值,%first%是我从此变量获取值,但我无法理解/a

感谢您的时间

2 个答案:

答案 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命令的一个非常好的在线帮助。