批处理 - 转义竖线的含义 |等号前 =
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%
将抛出语法错误,即使它在命令行上完全有效。
我目前正在努力理解 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%
将抛出语法错误,即使它在命令行上完全有效。