代码之家  ›  专栏  ›  技术社区  ›  goulashsoup

批次-转义竖条的含义|在等号之前=

  •  1
  • goulashsoup  · 技术社区  · 7 年前

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

    在相应的文章中,作者指出 灵活地将按位或多个错误号组合在一起 .

    好的,但我找不到任何关于批处理中按位操作的文章,上面有这样一行。。。

    所以请给我点启发。

    1 回复  |  直到 7 年前
        1
  •  5
  •   SomethingDark    7 年前

    正如上述代码所述,这是一个 bitwise OR 操作人员它用于同时设置多个二进制标志。

    在代码中

    SET /A ERROR_HELP_SCREEN=1
    SET /A ERROR_SOMECOMMAND_NOT_FOUND=2
    SET /A ERROR_OTHERCOMMAND_FAILED=4
    

    ERROR\u HELP\u屏幕为0b001
    错误\u SOMECOMMAND\u NOT\u FOUND为0b010
    错误\u OTHERCOMMAND\u FAILED为0b100

    使用按位OR将允许您返回类似0b101的内容,这意味着其他命令失败,并引发帮助屏幕错误。

    这个 ^ 因为批处理脚本处理 | 就像管道一样,无论上下文如何 SET /A errno|=%ERROR_OTHERCOMMAND_FAILED% 将引发语法错误,即使它在命令行上完全有效。