美文网首页
诡异的errorlevel

诡异的errorlevel

作者: 沐一同学 | 来源:发表于2023-04-25 17:58 被阅读0次

    errorlevel值,即是bat中最后的errerno,同$?变量

    现象:

    但是你会发现再For循环中会失效!!!

    原因:

    在for循环中或if语句中多条命令都需要获取返回值等情况下,用errorlevel显得无效,第二条命令开始errorlevel的值都不会变。
    此处涉及批处理中的变量延迟问题,并不是errorlevel无效,而是对errorlevel变量的引用采用的是没开启变量延迟情况下的百
    分号%。

    解决方案:

    开启变量延迟的设置:setlocal EnableDelayedExpansion,即延迟环境变量扩展,告诉解释器在遇到复合语句的时候,不要
    将其作为一条语句同时处理,而是一条一条地去解释。但是这时如果仍然用百分号%来引用变量是不起作用的,必须用感叹
    号!,如!errorlevel!。

    setlocal enabledelayedexpansion
    cmd1
    if!errorlevel! == 1 (
    cmd2
    echo !errorlevel!
    )
    

    相关文章

      网友评论

          本文标题:诡异的errorlevel

          本文链接:https://www.haomeiwen.com/subject/turmjdtx.html