[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [讨论]批处理重定向符号的任意位置效果相同

本帖最后由 applba 于 2011-5-19 23:44 编辑

任意位置效果相同。
>>1.txt echo  abc def
echo>>1.txt  abc def
echo  abc>>1.txt def
echo  abc def>>1.txt


测试代码
  1. @echo off &echo.>1.txt
  2. >>1.txt echo  abc def
  3. echo>>1.txt  abc def
  4. echo  abc>>1.txt def
  5. echo  abc def>>1.txt
  6. start 1.txt
  7. pause
复制代码
1

评分人数

你的研究总能给我不少启发。

TOP

本质是,cmd对语句进行预处理的时候,把“(句柄名称)(重定向符号)(目标句柄或设备)”这一段识别出来再挪到语句末尾,所以放哪里都可以。

TOP

3# zm900612


这个处理是由具体的命令进行的,此例是echo。

但是我认为呢,>>的处理和^是类似,是处理后消失,而不是移动到末尾。

TOP

转义是转义,语句划分是语句划分,二者不一样的。这很容易证明,运行下列命令就知道了,注意看回显:
  1. echo on
  2. echo afds^asdf
  3. echo sdf >con sef
  4. pause
复制代码

TOP

本帖最后由 applba 于 2011-5-19 18:13 编辑

5# zm900612

^和>的功能肯定不一样。
我的意思说 处理后的效果:即处理后消失。

TOP

怎么去区别“被处理后消失”和“被区分后失效”呢?

TOP

任何功能符号在预处理后都“消失”了,它们只是用来告诉CMD按什么逻辑和规则执行语句。

一句话,“预处理时判定语句的结构和功能”。

TOP

8# powerbat


唔,貌似这个说法更标准

TOP

说法这么混乱
只因为大家对预处理的概念理解不一
预处理是个相对笼统的概念
在批处理开启echo on后
回显的命令行已经是预处理的结果
至于这以后对命令行的分析算不算预处理
没有标准的界限定义
而且不同命令的预处理过程也是不同的
天的白色影子

TOP

嗯,反正谁对我听谁的...

TOP

本帖最后由 applba 于 2011-5-20 03:55 编辑

7# zm900612


首先,要识别出来它是特殊符号。
然后,解释其功能,即通常所说的(预)处理。

解释完了,特殊符号的使命就完成了,可以“消失”了

TOP

可以确定的是
cmd对 & | > >> < & && ||的处理是大体上分为两步的
第一步是对这些符号进行整理
包括对> <添加默认句柄号
对以上符号前后预留空格
对< >以及句柄对应的文件移到语句尾部

第二步是对这些符号进行处理
创建打开文件
复制文件句柄等
处理完这些符号后
整体语句的分析就已已经结束
这里不存在刻意的符号丢弃或者消失
天的白色影子

TOP

13# qzwqzw


为什么会要移动呢,不是很理解。
我觉得这个重定向符号就像是一个信使,和人接头 了,就可以走了。

TOP

忘了提到一点
cmd对 & | > >> < & && ||的两步处理是不连续的
中间夹杂着其它的一些命令行处理代码
第一步的所有整理操作
都是为了使命令行更加清晰和标准
让第二步的处理过程能够更加简便
天的白色影子

TOP

返回列表