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

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

单行注释%%

看例子:

结果:

可以看到,注释内容(无论是与命令同行还是单成一行)都不可见

但是注意,%%不能用于多行注释:

运行:

单行注释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 又太繁琐

相关推荐