cd …
这个命令基本都知道:返回上一层目录,这将作为以后测试命令是否起作用的指令。
看例子:
结果:
PS: 可以不用空格,直接用cd…
echo
基本功能演示
基本功能:控制命令是否回显,屏幕原样返回文本。
先看一个例子:
结果:
从上面我们可以看到三点:
- bat命令本身默认会显示在命令行中,本例中的“echo hello world”和上例中的“cd …”都证明了这一点,即bat脚本指令本身默认会“回显”,这和echo命令本身没有任何关系(由于echo的功能原因,这一点要理清)
- echo将后面紧跟着的内容全部视为字符串,并会原样打印出该字符串(类似C中printf效果),即使echo后面紧跟着的是正常的指令(如图中的cd …),echo也只是将其作为普通的字符串处理,会打印但并不会执行。
echo off
上面我们已经看到——bat脚本指令本身默认会“回显”,那如果我们不想命令本身回显,只想看到命令执行的效果怎么办,例如现在我只想屏幕打印出
hello world
不要“echo hello world”
好,看下面代码:
效果:
看到没有,echo off之后,代码中的:
echo hello world
echo pause
都没有在命令行中显示,全是直接显示了命令的效果:直接打印“hello world”和进行暂停。
实际上,如果后面有1000行代码,在命令行中都会显示了,因为这就是echo off的作用——关闭命令行的指令回显。
echo on
相应地,如果想重新开启指令回显,则需要使用echo on重新打开,这很好理解。
但是有个有趣的小细节,再看一下echo off:
效果:
echo off命令本身还是进行回显了,这很好理解,echo off之前系统是默认指令回显的,所以echo off回显了,其生效时间是在这条指令执行之后,所以之后的所有命令都不进行回显。
那么下面这个例子:
效果:
echo on 本身没有回显,这也好理解,在echo on之前,回显是关闭的(echo off),一直到echo on生效时间是在本条指令之后,故本身还是“隐身”状态。
用echo来查看echo开关状态
单独echo命令可以查看echo当前的开关状态:
结果:
如果连echo off都不想看到呢 —— @
这是使用echo off的效果:
怎么实现这样的效果:
这就用到另外一个手动关闭回显的指令 —— @,简单来说,在任何指令之前加上@,那么这条指令就不会进行回显,示例:
结果:
对比一下直接“cd …的效果”:
那么上面的需求就很好实现了 —— 用@关闭echo off指令本身的回显即可:
效果:
当然,也可以直接通过手动@所有的指令,让所有指令关闭回显:
效果:
echo和@的适用场合
通过上面也可以看出,echo off一旦关闭,则后续所有命令都会停止回显,这适用于完整的代码屏蔽,而@适用于echo on的状态下对于个别命令的隐身,当然,对于echo off本身的隐身还是挺有用处(强迫症患者),比较灵活。
当然,这里提一个@ + echo的妙用 —— 提示信息。
效果: