首页 > 代码库 > echo
echo
第一个批处理程序:
@echo off
echo Hello World!
pause
打开sublime,复制粘贴,保存到桌面为 .bat 或 .cmd格式文件,双击运行
@ 关闭当前命令行回显:
放在命令前,无论echo是否为打开状态,在执行窗口中都不显示它后面当前行的命令本身
echo 回显命令:
语法:
echo [on | off]
echo [message]
参数说明:
echo on 打开回显
不常用,一般系统默认就是echo on,只有当执行过echo off后才用
echo off 关闭回显
关闭除当前行的后面所有批处理命令的回显,只显示执行后的结果(即echo off 无法关掉echo off命令本身)。
可以在echo off前添加@,让所有命令都不回显,即:@echo off
echo+空格
查询当前计算机回显状态,on or off
echo+信息 显示信息
echo后要紧跟一个空格或特殊字符(空格和特殊字符不会显示),以区分echo命令和信息
如:
echo Hello World
echo.Hello World
echo/Hello World
三者等效
echo. 显示空行,相当于回车
echo和 . 之间没有空格,否则 . 将被输出到屏幕
. 可以用 , : ; / [ \ ] + ( = 等任意一个符号代替,不过 echo. 更常用(不要反人类…)
echo 文件内容>文件名
将文件内容输出到指定文件。若指定文件原有别的信息,将被清空
echo 文件内容>>文件名
将文件内容追加到指定文件。若指定文件原有别的信息,将不被清空
如:
echo Hello World>my.txt
没有指定my.txt的路径,执行后,则在当前目录生成内含Hello World的my.txt文件。(如果把 .bat 文件保存在桌面,则在桌面生成my.txt)
注意:echo Hello World>my.txt,echo后有一个空格。
Hello World后没有空格,my.txt里生成的Hello World后面也没有空格,光标移到下一行(即回车)
若Hello World后加一个空格,即echo Hello World >my.txt,该空格也会被输出到my.txt,同样光标移到下一行
> 后,有无空格无所谓,没影响,一般不加空格
如:
echo Hello Word>D:\my.txt
echo Hello Word>D:my.txt
等效,都是指定输出文件路径的格式,都会在D盘根目录生成my.txt。第二种不合规范,一般用第一种(Don’t be evil…)
(>> 用法同 >)
echo 输出高级技巧
1、输出字符
(1)输出 + - * / \ ( ) ? ; . , “ ‘ : :: ~ @ `
@echo off
echo + - * / \ ( ) ? ; . , “ ‘ : :: ~ @ `
pause
输出上述字符直接echo即可
(2)输出 ^ > >> & && | ||
@echo off
echo ^^
echo ^>
echo ^>^>
echo ^&
echo ^&^&
echo ^|
echo ^|^|
pause
输出 ^ > >> & && | || 需要转义字符 ^ 的帮助
若不用转义字符,使用 echo “||”,则代码为:
@echo off
set var=“||”
for %%i in (%var%) do echo %%~i
pause
过于复杂,不如使用转义字符简单直接
(3)输出 %
@echo off
echo %%%%%%%
pause
输出为:
7个%,最终输出了3个%:因为用echo输出%,输出的个数是代码个数除以2。批处理不支持浮点数,0.5个就直接舍弃
即:echo % 没有输出内容。 echo %% 和 echo %%% 都只输出一个 % 无论是否延迟变量
(4)输出 !
没有延迟变量时:
@echo off
echo !
echo !!
echo !!!
pause
分别输出1、2、3个感叹号
有延迟变量时:
@echo off
setlocal enabledelayedexpansion
echo ^^!
pause
感叹号含义发生转变,成了变量标识符
第一次预处理,! 只是一个普通字符,第一个 ^ 转义第二个 ^ 有第二次预处理是因为开启了延迟,
把第一次预处理留下的 ^ 当做转义字符,用来转义 !
即:第一次预处理, ! 只是普通字符,第二次预处理, !变成特殊字符
2、输出大量数据
echo命令每行只能输出一个数据,大量数据在同一行输出要用set命令实现,echo命令无法实现
3、用echo作参数
@echo off
set /p var=
echo %var%|findstr /be [0-9.]*>nul && echo Yes||echo No
pause
这里:echo %var% 不用于显示,而是用作参数
因为单独的 %var% 不能被执行,又没有合适的命令作为 %var% 的开头,所以选用echo
后面的 >nul 用于阻止信息显示,因为只需要其参数功能,不需要其显示功能(其他带参数命令,参考此用法)
4、用echo发声
echo ^G
使主板喇叭发出一次鸣响 若要多次鸣响,多输入几个 ^G即可(有些主板不支持声响,执行 echo ^G无效)
^G 不是两个字符,而是一个符号,对应十进制ASCII码是7 DOS窗口中用 Ctrl+G 或 Alt+7 输入
echo ^G>1.txt 保存为 .bat文件到桌面运行会响两次
第一次是计算机要回显本符号,但却无法显示,给出执行错误的警报
第二次执行本符号的效果
若要只发出一声鸣响,阻止本符号回显即可:
@echo ^G 或 程序头添加 @echo off 或 echo off
echo