批处理 - 转义竖线的含义 |等号前 =

Batch - Meaning of escaped vertical bar | before equal sign =

我目前正在努力理解 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% 结束。但是这段代码在做什么?

作者在相应的文章中指出,这使 可以灵活地将多个错误数字按位或运算在一起

好的,但是我找不到任何关于批量按位运算的文章,上面一行...

那么,请多多指教。

正如相关代码上面的段落所述,这是一个 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

使用按位或将允许您 return 类似 0b101 的结果,这意味着其他命令失败并出现帮助屏幕错误。

^ 是必需的,因为批处理脚本将 | 视为管道,而不考虑上下文,因此 SET /A errno|=%ERROR_OTHERCOMMAND_FAILED% 将抛出语法错误,即使它在命令行上完全有效。