Batch批处理语言echo命令的全面详细用法
介绍Batch批处理脚本语言echo命令的详细用法。包括回显功能的使用,显示变量,中文乱码的解决办法,显示变量的内容,如何显示特殊字符,如何利用echo来写入文件等等
Batch批处理语言echo命令的详细用法
1. echo命令简介
echo
是我们学习Batch批处理语言的时候第一个接触到的命令,它的作用类似于我们C语言里面的print()
,作用就是能在我们程序运行的过程中,显示一些信息出来,好让我们知道我们的程序执行到了哪里,在我们调试程序的时候也会起到一个相当重要的作用。
2. echo命令的用法
2.1 最直接的用法
直接echo
+空格+要显示的内容,所有的命令必须有空格隔开
echo hello world
但是我们这样做的时候回发现,当我们运行bat文件的时候,CMD窗口一闪而过,一下就没了,根本无法看到显示了什么,那么怎么办呢?
在代码的末行加入pause
即可让窗口停留,pause
的功能是暂停程序的运行,需要我们点击任意按键才能继续运行。
加入后的代码如下:
echo hello world
pause
运行后我们能在窗口中看到如下图所示的内容:
可以看到我们要显示的“hello world”有显示出来,但是还显示出了很多的其他内容,多余的内容是echo
的回显功能,显示的是当前执行的程序所在的位置。
2.2 回显功能
我们可以使用符号@
来屏蔽掉回显的内容,代码1如下
@echo hello world
pause
代码1出来的效果是这样的:
我们只在第一行加入了@
符号,所以第一行的回显不见, 我们第二行的pause
没有加@
符号,所以回显仍然存在。
我们现在试试两行都加入回显的效果:
@echo hello world
@pause
可以看到两行的回显都关闭了。
@
这个符号在批处理中的作用就是屏蔽掉当前行的回显。
那么我们要关闭所有的回显是不是要每一行都加个@呢?
如果我们的代码很长,那全部加岂不是得累死,办法是有的
可以用echo off
来关闭后面代码的回显
例如:
echo off
echo hello world
pause
我们看到echo off
后面两行代码的回显是关闭了,可是echo off
本身的回显并没有关闭啊,怎么办?
用@echo off
来关闭所有代码的回显
我们上面学习过了,符号@
可以用来关闭当前命令行的回显,所以用@
配合echo off
使用,就能关闭所有的回显啦。
测试代码如下:
@echo off
echo hello world
pause
代码第一行的回显不见了。
但是 要注意的是@echo off
这个命令只能关闭从该命令的所在的行数开始后面的命令,并不能关闭之前的回显,
比如下面的代码:
echo hello
@echo off
echo world
pause
可以看到第一行的回显并没有被关闭。
关闭了回显功能,我们可以用echo on
来重新开启回显功能
@echo off
echo hello
echo on
echo world
pause
从上面可以看到第1到第3行都没有回显,从echo on开启后的第4行才恢复了回显。
2.3 如何使用echo来显示on或者off呢?
只需要在echo后面加个英文的小数点".
"即可;代码如下
@echo. off
@echo. on
@pause
3. echo显示中文乱码的解决办法
当我们想显示中文的内容的时候发现显示的内容会出现乱码
@echo 显示中文
@pause
加入代码chcp 65001
chcp 65001
@echo 显示中文
@pause
我们成功的将中文显示了出来, 可是pause
的那句"请按任意键继续...
"却变成了英文,这是因为“中文locale下的ANSI对应的GBK字符集”,即代码页936。cmd.exe在解析批处理命令时是按照默认代码页的编码来解析的。众所周知,所有的文件都是以二进制的形式保存的,但是同样的二进制序列用不同的编码来解析得到的结果是不一样的。 1
比如:
E4 BD A0 E5 A5 BD
如果以UTF-8编码来解析是“你好
”,而用GBK来解析是“浣犲ソ
”。
用chcp
来切换代码页,65001
代码页对应的是UTF-8编码,所以显示结果正确。
如果加入了chcp 65001
后仍然显示为乱码,那么可能是使用了旧版的cmd.exe,在窗口标题处右键并点击属性
如果当前代码页仍然为963
只需将将字体改成Lucida Console,点击确定,然后再重新执行即可。
代码页为65001时中文显示才能正常。
4. echo显示变量内容
set
是设置一个变量的意思
set test=123456
是设置一个变量,叫做test
,并且赋值为123456
那么要通过echo把变量里面的值显示出来就要用到批处理变量引导符%
这个百分号严格来说是算不上命令的,它只是批处理中的参数而已.
引用变量用%var%,var是指变量的名称
@echo off
set test=123456
echo %test%
pause
上面的代码执行效果如下:
那如果要和中文一起显示怎么办呢?
直接加!
@echo off
chcp 65001
set test=123456
echo 变量值为%test%
pause
这里不需要任何连接符, 或者说%
就是连接符,效果如下
5. 利用echo来写入TXT文件
5.1 >
重定向符
输出重定向命令
这个字符的意思是传递并且 覆盖 ,他所起的作用是将运行的结果传递到后面的范围(后边可以是文件,也可以是默认的系统控制台)
在NT系列命令行中,重定向的作用范围由整个命令行转变为单个命令语句,受到了命令分隔符&,&&,||和语句块的制约限制。2
比如:
使用命令:echo hello >1.txt
将建立文件1.txt,内容为”hello “(注意行尾有一空格)
echo hello >1.txt
使用命令:echo hello>1.txt
将建立文件1.txt,内容为”hello“(注意行尾没有空格)
echo hello>1.txt
注意: 如果要写入的文件不存在则会在当前路径下新建一个文件并写入覆盖, 已存在则直接覆盖内容.
echo
命令写入文件可以直接写入中文而不需要用到chcp 65001
代码
echo 中文>1.txt
原因是txt文档本来就是UTF-8编码
5.2 >>
重定向符
输出重定向命令
这个符号的作用和>
有点类似,但他们的区别是>>
是传递并在文件的 ==末尾追加 == ,而>
是 覆盖
echo hello > 1.txt
echo world >>1.txt
6. echo显示特殊符号
6.1 ^
转义字符
^
是对特殊符号 <,>,& 的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。
@echo off
echo ^<
echo ^>
echo ^&
echo ^<^>^&
pause
更多推荐
所有评论(0)