找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 65406|回复: 19

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

[复制链接]
发表于 2011-5-19 15:27:51 | 显示全部楼层 |阅读模式
本帖最后由 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技术 +1 收起 理由
Hello123World + 1 好!

查看全部评分

发表于 2011-5-19 16:38:55 | 显示全部楼层
你的研究总能给我不少启发。
发表于 2011-5-19 16:44:40 | 显示全部楼层
本质是,cmd对语句进行预处理的时候,把“(句柄名称)(重定向符号)(目标句柄或设备)”这一段识别出来再挪到语句末尾,所以放哪里都可以。
 楼主| 发表于 2011-5-19 17:10:33 | 显示全部楼层
3# zm900612


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

但是我认为呢,>>的处理和^是类似,是处理后消失,而不是移动到末尾。
发表于 2011-5-19 17:47:19 | 显示全部楼层
转义是转义,语句划分是语句划分,二者不一样的。这很容易证明,运行下列命令就知道了,注意看回显:

  1. echo on
  2. echo afds^asdf
  3. echo sdf >con sef
  4. pause
复制代码
 楼主| 发表于 2011-5-19 18:11:59 | 显示全部楼层
本帖最后由 applba 于 2011-5-19 18:13 编辑

5# zm900612

^和>的功能肯定不一样。
我的意思说 处理后的效果:即处理后消失。
发表于 2011-5-19 22:19:41 | 显示全部楼层
怎么去区别“被处理后消失”和“被区分后失效”呢?
发表于 2011-5-19 22:31:28 | 显示全部楼层
任何功能符号在预处理后都“消失”了,它们只是用来告诉CMD按什么逻辑和规则执行语句。

一句话,“预处理时判定语句的结构和功能”。
发表于 2011-5-19 22:55:58 | 显示全部楼层
8# powerbat


唔,貌似这个说法更标准
发表于 2011-5-19 23:20:37 | 显示全部楼层
说法这么混乱
只因为大家对预处理的概念理解不一
预处理是个相对笼统的概念
在批处理开启echo on后
回显的命令行已经是预处理的结果
至于这以后对命令行的分析算不算预处理
没有标准的界限定义
而且不同命令的预处理过程也是不同的
发表于 2011-5-19 23:32:16 | 显示全部楼层
嗯,反正谁对我听谁的...
 楼主| 发表于 2011-5-19 23:47:38 | 显示全部楼层
本帖最后由 applba 于 2011-5-20 03:55 编辑

7# zm900612


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

解释完了,特殊符号的使命就完成了,可以“消失”了
发表于 2011-5-20 08:26:44 | 显示全部楼层
可以确定的是
cmd对 & | > >> < & && ||的处理是大体上分为两步的
第一步是对这些符号进行整理
包括对> <添加默认句柄号
对以上符号前后预留空格
对< >以及句柄对应的文件移到语句尾部

第二步是对这些符号进行处理
创建打开文件
复制文件句柄等
处理完这些符号后
整体语句的分析就已已经结束
这里不存在刻意的符号丢弃或者消失
 楼主| 发表于 2011-5-20 20:07:21 | 显示全部楼层
13# qzwqzw


为什么会要移动呢,不是很理解。
我觉得这个重定向符号就像是一个信使,和人接头 了,就可以走了。
发表于 2011-5-20 20:19:26 | 显示全部楼层
忘了提到一点
cmd对 & | > >> < & && ||的两步处理是不连续的
中间夹杂着其它的一些命令行处理代码
第一步的所有整理操作
都是为了使命令行更加清晰和标准
让第二步的处理过程能够更加简便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:25 , Processed in 0.022807 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表