-
批处理命令——echo 和 @
【1】echo 命令简介
echo 命令的常见用法(必须掌握)分为以下几种情况:
一、无参数
作用:显示当前echo的状态:处于打开或关闭状态。
新建一个文本文件,命名为echo,修改类型为bat,用Notepad++打开,编辑以下内容:
1 echo 2 echo on 3 echo 4 echo off 5 echo 6 pause
运行结果:
二、有参数
- 参数为[on/off]。作用:on打开命令的回显状态;off关闭命令的回显状态。关于“回显”,可以理解为:重复显示。
- 参数为message。 作用:打印message内容。
- echo前面加@与否。 作用:加@代表不显示当前行命令自身;否则反之。
- 参数 message > 文件。 作用:把message内容写入文件中,其中“>”表示“清空另写入”。
- 参数 message >> 文件。 作用:把message内容写入文件中,其中“>>”表示“追加再写入”。
- 其他.....
为了更好的理解以上各种情况,举例如下:
1> 新建一个文本文件,命名为echo1,修改类型为bat,用Notepad++打开,编辑以下内容:
1 echo off 2 echo 123 3 @echo off 4 echo 456 5 @echo on 6 echo 789 7 echo on 8 echo 012 9 pause
运行结果:
简单分析:
第 1 行:echo前没有加@,那么显示当前行命令本身;off表示关闭命令的回显状态。
第 2 行:参数为“123”,上一句已经关闭了命令的“回显”状态,那么直接显示命令执行的结果即123
第 3 行:echo前加@,那么不显示当前行命令本身(其实,即使不加也不会显示!请往下看);off表示仍旧为关闭命令的回显状态。
第 4 行:同第二行,直接显示命令的执行结果即456
第 5 行:echo前加@,那么不显示当前行命令本身(其实,即使不加也不会显示!请往下看);on表示打开命令的回显状态。
第 6 行:参数为“789”,由于第五行已经打开命令的回显状态,所以执行此行命令需要重复显示命令,即为:F:\studybat>echo 789
第 7 行:由于第五行已经打开命令的回显状态,所以执行此行命令需要重复显示命令,即为:F:\studybat>echo on
第 8 行:与第六行同理
第 9 行:为了查看显示结果,特此暂停命令。以下示例同理再不做解释。
2> 新建一个文本文件,命名为echo2,修改类型为bat,用Notepad++打开,编辑以下内容:
1 @echo off 2 echo 123 3 echo off 4 echo 456 5 echo on 6 echo 789 7 @echo on 8 echo 012 9 pause
运行结果:
简单分析:
第 1 行:echo前加@,那么不显示当前行命令本身;off表示关闭命令的回显状态。
第 2 行:由于第一行已经关闭命令的回显状态,直接显示此行命令的执行结果为123
第 3 行:由于第一行已经关闭命令的回显状态,而且off表示仍旧关闭命令的回显状态,所以无输出。
第 4 行:由于第三行仍旧关闭命令的回显状态,直接显示此行命令的执行结果为456
第 5 行:由于第三行仍旧关闭命令的回显状态,所以此行命令不进行回显。但是,on表示打开命令的回显状态。
第 6 行:由于第五行打开命令的回显状态,所以执行此行命令需要重复显示命令,即为F:\studybat>echo 789
第 7 行:由于第五行打开命令的回显状态,但是echo前加@,所以执行此行命令不重复显示命令。on表示仍旧打开命令的回显状态。
第 8 行:与第六行同理。
3> 新建一个文本文件,命名为echo3,修改类型为bat,用Notepad++打开,编辑以下内容:
1 @echo off 2 echo 123 3 echo off 4 echo 456 5 @echo on 6 echo 789 7 echo on 8 echo 012 9 pause
运行结果:
简单分析:
第 1 行:echo前加@,那么不显示当前行命令本身;off表示关闭命令的回显状态。
第 2 行:参数为“123”,由于第一行已经关闭命令的回显状态,执行此行命令直接反馈结果为123
第 3 行:由于第一行已经关闭命令的回显状态,所以不再重复显示此命令;off表示仍旧保持关闭回显状态。
第 4 行:参数为“456”,由于第三行仍旧关闭命令的回显状态,执行此行命令直接反馈结果为456
第 5 行:由于第三行仍旧关闭命令的回显状态,所以不再重复显示此命令;至于@可以忽略不考虑,但是on表示打开命令的回显状态。
第 6 行:由于第五行打开命令的回显状态,所以执行此行命令需要重复显示命令,即为F:\studybat>echo 789
第 7 行:由于第五行打开命令的回显状态,所以执行此行命令需要重复显示命令,即为F:\studybat>echo on 当然,on表示仍旧打开命令的回显状态。
第 8 行:由于第七行仍旧打开命令的回显状态,所以即与第六行同理。
4> 新建一个文本文件,命名为echo4,修改类型为bat,用Notepad++打开,编辑以下内容:
1 echo off 2 echo 123 3 @echo off 4 echo 456 5 echo on 6 echo 789 7 @echo on 8 echo 012 9 pause
运行结果:
简单分析:
第 1 行:echo前无@,显示此行命令,即为:F:\studybat>echo off ;off表示关闭命令的回显状态。
第 2 行:参数为“123”,由于第一行已经关闭命令的回显状态,执行此行命令直接反馈结果为123
第 3 行:由于第一行已经关闭命令的回显状态,所以不显示此行命令状态。off表示仍旧关闭命令的回显状态。
第 4 行:参数与“456”,由于第三行仍旧关闭命令的回显状态,执行此行命令直接反馈结果为456
第 5 行:由于第三行仍旧关闭命令的回显状态,不显示此行命令。但是,on表示从此打开命令的回显状态。
第 6 行:由于第五行打开命令的回显状态,所以执行此行命令需要重复显示命令,即为F:\studybat>echo 789
第 7 行:由于第五行打开命令的回显状态,但是echo前加@,所以不显示此行命令。on表示仍旧打开命令的回显状态。
第 8 行:由于第七行仍旧打开命令的回显状态,所以执行此行命令需要重复显示命令,即为F:\studybat>echo 012
5> 新建一个文本文件,命名为echo5,修改类型为bat,用Notepad++打开,编辑以下内容:
1 echo on 2 echo I love bat > a.txt 3 echo I love bat too >> a.txt 4 pause
运行结果:
通过以上四个例子的分析,如上此例的终端结果就不再做分析。
另外,在当前目录(即文件夹)中会自动(当然,不存在情况下会先自动生成一个;存在情况下直接按命令写入)生成一个a.txt文本文件,其内容如下:
简单分析:
第 2 行:新建文本文件a.txt,写入内容:I love bat
第 3 行:在文件中追加内容:I love bat too
注意:文件也可以为其他任意路径,任意名称等。在此不再赘述。
6> 新建一个文本文件,命名为echo6,修改类型为bat,用Notepad++打开,编辑以下内容:
1 @echo off 2 echo I love bat > b.txt 3 echo I love bat too >> b.txt 4 echo I hate bat > b.txt 5 pause
运行结果:
根据前四个示例的情况分析,此例终端结果无任何内容,所以不再呈现。还不理解?请回头再看看前四个例子。
另外,在当前目录(即文件夹)中会自动(当然,不存在情况下会先自动生成一个;存在情况下直接按命令写入)生成一个b.txt文本文件,其内容如下:
简单分析:
第 2 行:新建(因为实际我本地并没有这个文件)文本文件b.txt,写入内容:I love bat
第 3 行:在文件中追加内容:I love bat too
第 4 行:清空文件的所有内容,重新再写入内容。具体内容为:I hate bat
注意:例5与例6的联系。理解“>” 与 “>>”的区别。
7> echo 字符串 & echo 字符串 ......
&类似and的意思,逻辑运算,用来显示多行数据。新建一个文本文件,命名为echo7,修改类型为bat,用Notepad++打开,编辑以下内容:
1 echo abc & echo def & echo ghi 2 pause
运行结果:
8> 其他
【2】@命令简介
结合以上的示例,不难看出,@命令的作用很简单:
命令前加@符号,表示不显示@后面的命令。
举一个不和谐的例子:在入侵过程中(使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
出处:https://www.cnblogs.com/Braveliu/p/5061745.html