我目前正在努力理解introduction to windows batch scripting的一行:
SET /A errno=0
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2
...
... SET /A errno^|=%ERROR_SOMECOMMAND_NOT_FOUND%
根据this回答,抑扬符^
是一个转义字符,因此我们最终得到errno|=%ERROR_SOMECOMMAND_NOT_FOUND%
。但那么这段代码在做什么呢?
在相应的文章中,作者声明这使得可以灵活地按位或多个错误号一起。
好的,但我找不到任何关于批量操作的文章,如上所述......
所以,请稍微给我一点。
答案 0 :(得分:4)
正如相关代码上方的段落所述,这是一个bitwise OR
运算符。它用于同时设置多个二进制标志。
在代码中
SET /A ERROR_HELP_SCREEN=1
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2
SET /A ERROR_OTHERCOMMAND_FAILED=4
ERROR_HELP_SCREEN为0b001
ERROR_SOMECOMMAND_NOT_FOUND为0b010
ERROR_OTHERCOMMAND_FAILED是0b100
使用按位OR将允许您返回类似0b101的内容,这意味着其他命令失败并且引发了帮助屏幕错误。
^
是必要的,因为无论上下文如何,批处理脚本都会像管道一样处理|
,因此SET /A errno|=%ERROR_OTHERCOMMAND_FAILED%
会抛出语法错误,即使它在命令行上完全有效。