对于echo off命令
市面上的教程总是说他用来关闭回显,是的,那些浅显的抄来的教程只能这么说 他懒的再深入的说了。对于一个学习批处理的新手来说,他是完全不知道回显是什么意思的。我就深受其害 所以我在写批处理教程的时候是绝不会简单说一句关闭回显来搪塞人的。
读到这里的你也思考思考这个回显究竟是什么 你知道吗?
甚至有些批处理已经入门的同志也只是错误的认为关闭回显就是关闭命令行和前面那个路径。你知道开启回显时命令行的执行过程吗?
做一个实验 输入以下代码:- (echo hello world!
- exit
- echo will u see this line?)>0.txt
- start 0.txt
复制代码 也许有人认为这代码是存在严重错误的。是不是错误先不说 这样写是有安排的。
你说start 0.txt这个命令会执行吗?答案是肯定的 不会
那你说如果我双击这个bat 他都会做什么?看看截图 历历在目:
从这个图 再对照代码 你可以真真切切知道批处理的执行过程:
以行为单位读取批处理命令这个行不是你记事本里面的一行两行 这里的行是用一个换行符号来标记的 在没遇到行结束符号前 所有的代码都是一行。
在这个代码里第一行就是括号里面的读取完了做什么呢?
由于回显命令是打开的,cmd命令会把读取到的命令原原本本的显示在框里的
而你会发现start 0.txt并没有显示
这也基本上解释了变量延迟的原理了
cmd程序首先读取一行命令 先做预处理!
从哪里看出做了预处理了呢?
你看最后一行的1>0.txt
对照源代码 1从哪里来?
已经入门的知道这是句柄。
处理完以后执行这一行命令
我也不知道发这个帖子的目的是什么 我就是想说 想告诉你这个过程是怎么回事。 |