华人澳洲中文论坛

热图推荐

    【WINDOWS / DOS 批处置】对于标签的履行流程

    [复制链接]

    2022-12-5 06:22:45 32 0

    甚么是标签
    在 WINDOWS / DOS 批处置编程中,使用标签定义一个顺序块,标签相似其它编程言语(例如:C言语)中的函数。
    标签作为顺序块的示用意如下:
    蓝色方框是 :firstLabel 标签,白色方框是 :secondLabel 标签


    那末如何使用曾经定义的标签呢?
    【标签不被调历时的流程】
    在 WINDOWS / DOS 脚本编程中,个别使用goto命令或call命令调用标签。
    假如标签没有被调用,则当脚本顺序履行到标签时,标签会作为个别顺序代码被履行(就像标签不存在同样)。
    示例一


    运转


    【使用goto命令调用】
    调用格局:goto :label
    goto命令使CMD.EXE跳转到 label 的第一行开始履行,始终履行完 label 的最初一行,而后退出脚本顺序。
    示例二


    运转


    解析
    firstLabel被履行完后,间接退出脚本顺序了,secondLabel 标签并无失掉履行。
    【使用call命令调用】
    调用格局:call :label [ pararneters ]
    call命令使CMD.EXE跳转到 label 的第一行开始履行,始终履行完label 的最初一行,而后再跳转至call命令的下一行持续履行脚本顺序。
    对于传递给标签的参数 pararneters,详见 批处置文件的参数 、标签的参数
    示例三


    运转


    解析
    值得留意的是 :secondLabel标签被call命令履行完后,会持续履行call命令的后续顺序(包罗定义的标签代码,如下图白色方框所示),直到脚本完结。


    【把标签改成函数】
    经过上述示例能够看出:标签的履行流程和其它言语中的函数不彻底相反。怎么能力把标签改为咱们相熟的函数呢?
    只需两边便可,步骤如下:
    1、“goto :EOF” 语句作为每个标签的最初一行
    2、“goto :EOF” 语句作为在脚本中第一个标签定义行的上一行
    把示例三修正如下:


    运转


    当初,标签就变为“函数式标签”了。
    【留意】
    使用goto命令调用上述“函数式标签”时,被调用标签履行实现,会退出脚本顺序,这个好了解,毕竟标签的最初一行是“goto :EOF
    使用call命令调用上述“函数式标签”时,标签履行实现,仍是会前往至call命令所外行的下一行持续履行。标签的最初一行是“goto :EOF”,该行被履行实现象征着该标签履行终了。【调用格局】call :label [ pararneters ]的语义是:被调用标签履行终了当即前往,持续履行call命令的后续语句。这里有些“绕”,请同窗们本人领会一下。
    写作不容易,假如本文帮到了您,请您 “反对一下”。

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    注册会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题30

    帖子44

    积分197

    图文推荐