bat脚本积累(三)

您所在的位置:网站首页 bat文件转sh bat脚本积累(三)

bat脚本积累(三)

2023-12-12 18:47| 来源: 网络整理| 查看: 265

单行注释%%

看例子: 在这里插入图片描述 结果: 在这里插入图片描述 可以看到,注释内容(无论是与命令同行还是单成一行)都不可见 但是注意,%%不能用于多行注释: 在这里插入图片描述 运行: 在这里插入图片描述

单行注释REM

例子: 在这里插入图片描述 结果: 在这里插入图片描述 这也能看到REM指令的特点: 1.“REM 注释”本身是REM指令的使用方式,受“bat指令默认回显”的约束,本身会回显在屏幕上,但是只是将注释作为文本处理,原样输出,可以想见,如果使用@或echo off将REM隐身,则其注释效果和%%就一样了 —— 源代码中注释的效果: 在这里插入图片描述 结果: 在这里插入图片描述 一个不得不问的问题是:可以行末注释吗: 在这里插入图片描述 结果: 在这里插入图片描述 结论很明显:不行。只能单成一行注释行,不能像%%进行行末注释。

单行注释::

先看例子: 在这里插入图片描述 结果: 在这里插入图片描述 同REM一样,::能否进行行末注释呢? 结果: 在这里插入图片描述 结论:不行,::只能单独注释行,不能进行行末注释。

其实不得不提::命令的本质 —— :后面加任意非字母数字符号均可作为注释标识符号,如: 在这里插入图片描述 结果: 在这里插入图片描述 答疑时间:其实 : 本身就可以作为定义标签所用,如在goto语句中:

goto label @echo 这里其实会被直接跳过 :label @echo 这里将会被执行

定义标签时,使用 : ,而标签本身只是作为一个标识符,并不是命令,所以不管echo开关状态如何都不会回显,而 :: 和上面演示的 :? 等等刚好利用定义标签这个功能来实现了注释(个人理解,如有错误欢迎指正)。 那么这也提示我们:

:: 进行注释的本质是 : 能进行注释原则上可以使用 : 进行任何内容的注释,但是为了避免和已有标签冲突,不建议直接使用 : ,相应地,也不建议:后面加数字或字母,因为这和标签的命名规则冲突,也容易引起混淆,建议直接使用 ::,因为这和标签命名不冲突,而且最为常用,程序易读。 多行注释 goto

上面介绍的都是单行注释,当然我们能对多行同时注释,但是毕竟太麻烦,有什么方法可以提供多行注释呢,其实bat本身并没有多行注释命令,但是就像我们可以利用 : 定义标签来进行注释一样,我们可以利用一些语法逻辑来实现多行注释。 整体的思路就是:将多行注释写在永远也不会执行到的地方。 这是因为利用了bat的特点:单步解释性执行,不会进行编辑,检错。 看下面例子: 在这里插入图片描述 结果: 在这里插入图片描述 这段代码很好理解,执行到goto label时将直接跳转到:label处,中间的部分不予理会(注意,命令中也不会显示)。自然形成了段注释的“效果”。 另外,如果不想看到goto label(毕竟只是为了实现多行注释的目的的,本身没有其他意义),可以用@将其隐身掉。

多行注释if

看例子: 在这里插入图片描述 结果: 在这里插入图片描述 因为1==0永远不会成立,所以括号内的语句永远不会执行,自然起到了注释得效果。 另外,这里强烈推荐以上的if写法,注意点:

if+空格+条件+空格+左括号 多行注释 右括号

但美中不足的是,命令中会显示该命令和注释,这一点可以和goto一样,使用@将if句注释掉: 在这里插入图片描述 结果: 在这里插入图片描述

总结 单行注释 %% 本身不是指令,故是不回显的,可以单独成行注释,也可以行末注释REM 本身是指令,会回显的,只能单独成行注释:: 来源于:定义标签,只能单独成行注释 多行注释 goto labelif 1==0 二者都可以通过@将本身隐身。 @echo 提示信息

这个可以用于在屏幕打印信息,因为有时需要向屏幕输出一些说明信息,而

REM 提示信息 会回显REM,不美观@echo off + echo 提示信息 + echo on 又太繁琐


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3