[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
让我想起了批处理内幕:句柄 那篇帖子了,后面有一个句柄转换后把con重新指给1句柄的,那里面就出现了cls控制字符的显示,看来根源也在这里。

TOP

回复 12# qzwqzw


    (echo,|set a=&cls)>con

TOP

回复 14# qzwqzw


    举那个例子可能有点不合适,因为(echo,|cls)>con与cls>con是一样的效果,但是下面这两句就不一样了。
  1. (echo,|echo,)>con
复制代码
  1. echo,>con
复制代码
但是若用句柄备份的思想来看待这个问题的话,那么可以再把这里的错位再还原回去:
  1. (echo,|echo,)>con 1>&3
复制代码
它们表现出的现象何其相似,并且可以用这个方式来解释出现的原因并将之还原回去,所以我才说所谓的句柄备份是否背后的原因也是触发了你这里面提到的模式置换。

TOP

回复 21# CrLf


    说的不错。我的理解是:
  1. (cls|echo,)>con
复制代码
当命令的执行结果被重定向到下一个非接收流的命令,并且过程被括起来重定向到con后,其实是相当于标准输出被重定向到了数据流,而数据流又被重定向到了con(这个非原始标准输出),则所有的输出内容都被看着流数据对待,特殊控制字符不再有其原始的控制效能,比如清屏,beep等,这个时候的输出内容就有点类似于debug的d命令右边显示字符的那块了,所有字节被看成普通文本对待,能显示就显示,不能显示留空跳过。当然它们的具体显示效果不同。

TOP

返回列表