16
2022
07
10:35:33

BAT脚本积累(三)—— BAT的注释



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

https://www.freesion.com/article/9381508501/



单行注释%%

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

单行注释REM

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

单行注释::

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

结果:
在这里插入图片描述
结论:不行,::只能单独注释行,不能进行行末注释。

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

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

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

  1. :: 进行注释的本质是 : 能进行注释

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

多行注释 GOTO

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

多行注释IF

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

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

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

总结

单行注释
  • %% 本身不是指令,故是不回显的,可以单独成行注释,也可以行末注释

  • REM 本身是指令,会回显的,只能单独成行注释

  • :: 来源于:定义标签,只能单独成行注释

多行注释
  • goto label

  • if 1==0
    二者都可以通过@将本身隐身。

@ECHO 提示信息

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

  • REM 提示信息 会回显REM,不美观

  • @echo off + echo 提示信息 + echo on 又太繁琐


本文链接:http://www.hqyman.cn/post/2474.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: