Windows 批处理脚本学习教程

Collected by Clove

第二章:显示篇

有了前文作铺垫和基础,后面的便容易理解多了。这里主要讨论的是批处理过程中与显示相关的命令用法。先看一下 echo、@、pause、>、>>、title 、rem 这几个命令或符号的用法。

2.1 echo @ 和 pause

在DOS命令提示符中使用 echo /? 可以获得对 echo 用法的解释。echo on 用于打开命令的回显;echo off 用于关闭命令的回显(默认情况下,ehco 是处于打开状态的)。只输入 echo 可以获得当前的回显状态(是否处于打开状态)。输入 echo 再加一段文字,例如 echo Hello world! 可以显示出 Hello world! 这句信息。

@ ,如果在某一条命令最前面加上 @ ,那么这一行命令就不会显示出来。与 echo off 有着相似之处。 echo off 以后的所有命令本身都不再显示出来;而 @ 只是将当前那一行的命令不显示出来。然而,至于命令所产生的输出结果,仍然会显示出来。这看起来似乎有些拗口,但我们会通过例子来很容易地理解它们。

pause ,从字面上看就是暂停的意思,效果等同于将程序挂起,在按下任意键后才继续。

::::::::测试显示状态.bat::::::::
echo
pause

echo 例句一 此时回显为打开状态,因此前一句显示了命令行
@echo 例句二 此时回显虽然为打开状态,但命令前使用了@,因此未显示命令行本身
pause

echo off
echo
echo 例句三 此时回显为关闭状态,因此未显示命令行本身
@echo 例句四 此时回显为关闭状态且使用了@,因此未显示命令行本身
pause
::::::::::::::::::::::::::::::::

上面的这一段批处理测试,有效地展示了在使用 echo on 和 echo off ,以及在命令前加上 @ 符号后,命令行本身的显示效果。

2.2 > 和 >>

> 表示将输出结果打印到某处。比如:echo Hello world!>d:\a.txt 表示将 Hello world! 这句话写入到 D:\a.txt 文件中。如果以前该文件中已经存在,并且有自己的内容,那么以前的内容就被覆盖掉了。比如我们再输入:echo yo, whats up>d:\a.txt ,那么文件 a.txt 中以前的 Hello world! 就变成了现在的新例句。

>> 与 > 类似,也可以将输出结果打印到某处。比如我们用 echo nothin much, and u?>>d:\a.txt 将例句写到 a.txt 里时,该例句并不会覆盖原有的 yo, whats up 这句话,而是加在了原句的后面。

如果一条命令后面跟上 >nul ,比如 pause>nul 表示将 pause 这条命令的输出显示到空设备里, nul 表示为空。用了 pause>nul 这条命令后,"按任意键继续..."的提示就不再出现了。

对比 echo off、@ 和 >nul 。echo off 表示这以后的所有命令的本身不再显示了,直到后面有 echo on 的出现。而加在命令行前面的 @ 只是让当前这一行命令不显示。加在命令行后面的 >nul 却可以让该命令的输出不显示。

2.3 title 和 rem

title 后面跟字符串可以改变当前命令提示符的标题名称。输入 title 这是新标题 后,该命令提示符左上角的标题名称已经变为"这是新标题"了。输入中文可以通过 Ctrl+空格 切换出中文输入法;也可以通过复制粘贴的方式输入。

rem 的用法就很简单了,rem 后面跟上一段文字,在批处理中可以作为注释用。rem 和它后面跟的文字在实际运行时并不会起任何作用,只是为了方便人们阅读该批处理时更容易理解而已(如果您用过C的话,一定会联想到C语言里的 // 或 /* */ 的用法)。除了 rem 外,两个连续的冒号 :: 也起同样的作用。提示:rem 与 :: 的区别在于,rem 也是一种命令,在 echo on 的情况下会被显示出来,而 :: 却不会。

:::::::测试标题和注释.bat:::::::
@echo off
rem 上条命令表示以后所有的命令行不再显示自身,@表示连echo off这一句都不显示,当前这一行只是注释而已,不参与程序的运行。

echo 欢迎!
pause

title 现在标题已经换成这句了
echo 标题已更改

echo 现在使用了暂停,按任意键后该批处理结束~
pause>nul
rem 不显示pause的输出提示,而是使用我们自己定义的暂停提示。
::::::::::::::::::::::::::::::::

2.4 其他命令

prompt ,这就是命令提示符中所谓的"提示符"了。在命令提示符中输入 prompt 加一段文字能够使得提示符不再是以传统的路径名和大于号组成的,而是以我们刚才输入的那段文字开头的。这也许不是很好理解,或者您对 prompt 的含义还不清楚或只知道其字面含义。这并不要紧,如果您只要简单地输入 prompt 提示符 就能很快地明白 prompt 的含义了。此外,要想恢复以前的路径名和大于号为开头的提示符,只需要再输入 prompt $p$g 即可。这里$p 表示当前驱动器和路径, $g 表示大于号。因为一些特殊的格式或符号需要用 $ 加特定的字母来表示。具体的说明可以用 help prompt 来查询。

Collected by Clove--Mail to Me

Windows 批处理脚本学习教程