(二)批处理echo、pause指令一般用法详解,@的含义
上期回顾~

由这个程序留下了一些疑问。@echo off是啥?这个“@”又是啥?文件式和交互式的运行结果是一样的,就是画面有点不同…?
先说最后一个吧。我们一运行cmd,就会看到以下画面:

通常我们需要的信息只有③这点,称作cmd当前目录。文件式的话,batch文件的存放目录就是运行它时的cmd当前目录。
一、echo指令
1、echo最基础用法
现在,隆重介绍我们接触的第一个batch指令,echo。echo的含义是“回显”,回溯显示内容。例如“echo 123”“echo 1+1=2”“echo 你好!”。如图所示:

注意,echo后面要有空格,否则无法输出显示我们的文本内容。另外,文本前面的n-1个空格也可被输出。
那就有个问题了,只想输出空格呢?而且怎么表示键盘敲个回车换行的意思呢,是让它输出一个空行?不急,先让up把最基本的讲完啦qwq
因为像直接输入“echo”或者“echo ”这样,并不能解决上面的问题,而是会看到下面这张图:

显示“ECHO 处于打开状态。”,显然不是我们本来的文本内容。这只是在告诉我们,cmd现在的echo的状态。之前说echo意为“回显”,那意思就是,cmd现在的回显状态是开启的,是“on”。默认一打开cmd,回显状态就是on。可以输入“echo /?”来查询echo指令的帮助说明。(对于其它指令亦是如此,以后再来说说“/?”(这也是一个指令))
帮助告诉我们,echo的用法有“echo on”,打开回显状态,“echo off”,关闭回显状态,“echo message”,回溯显示文本内容。(这个已经试过了)
直接输入“echo on”,无变化。输入“echo off”,我们可以看到cmd当前目录“不见了”,不显示了。然后我们再这样输入“echo on”:

好,爷的青春又回来了。可是,如果我要输出显示“on”“off”呢,甚至“/?”呢??那又咋办嘛!
2、echo帮助里没有的又很通常的用法
久等了。有11种写法可以输出“回车”,或者说一个空行:
echo= echo, echo; echo/ echo: echo\ echo+ echo[ echo] echo.
这里是10种,从左到右运行效率依次降低。但放在今天的设备系统上,似乎效率这都不是事儿,尽管用。
第11种比较特殊,是“echo(”,兼容性最强,几乎啥都能输出,效率也较高。
这11个写法都可以输出“on”或“off”。比如“echo,on”(不贴图了,自己尝试吧~)。
“echo,”“echo;”“echo=”无法输出“/?”。可用“echo(/?”或剩下其它的写法。
结合效率通用和美观易读而言,思思推荐用“echo(”来输出“回车”“on”“off”“/?”。
顺带一提“echo.”有一个bug,看下图:

另外,“echo”最多可以一次输出8190个字符左右,具体依系统环境而定。
二、@
“@”表示关闭当前指令的回显,“@”本身不是指令。应该不会有小伙伴会觉得“@echo”是个指令吧,不会吧
回来了,全都回来了,这下“echo off”和“@echo off”的含义和区别挺清楚了。直接看图:

“echo off”把batch文件所有在它之后的语句的回显都关闭,但不包括它自身。
“@echo off”则是在“echo off”基础上再包括关闭自身回显。
如果batch文件没有写“echo off”,则因为默认是“echo on”,每一行语句都会回显。还可以在指令前加上“@”来无视当前回显状态,让某些指令关闭回显。
因此,我们基本默认batch程序文件的开头第一句是“@echo off”。
三、pause指令
“pause”,暂停批处理程序,并自动输出显示“请按任意键继续. . .”。注意是暂停!!对交互式和文件式都一样,直接打个pause就完事了(也不贴图了)。
还有一种“pause>nul”写法,纯暂停,不输出显示任何内容。(严谨来说这个写法是两步操作,归类于pause指令不纯粹,以后再讲)当然,我们可以结合echo指令来自定义想输出显示的内容并且暂停。比如:

参考:
《批处理技术内幕:ECHO命令》:http://demon.tw/reverse/cmd-internal-echo.html 作者Demon。本文及原文均遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款:http://demon.tw/copyright
echo最佳用法考:http://bbs.bathome.net/viewthread.php?tid=18350
感谢你观看到这里。