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

TOP

其实进程的多少无所谓~
管道,用于连接一个命令的输出句柄(句柄1)和另一个命令的输入句柄(句柄0)。
注意:
管道只传递前一个命令的标准输出(句柄1)到后一个命令;
管道并不传递前一个命令的错误输出(句柄2)到后一个命令。
  1. echo 12345 >nul | more
  2. cd  \\\ |more >1.txt
复制代码
第一句什么也不会显示,因为echo命令的标准输出会被优先重定向到nul,more命令不会得到任何信息。
第二句1.txt也是空的,因为cd命令的出错信息是句柄2输出的,句柄2的信息不会被管道传递。

我在5#的例子就是这个意思,居然没有人讨论~

TOP

回复 13# find


    dirrrr的句柄1本来就不会产生任何信息。
    2>&1,或者2<&1,都表示句柄2复制句柄1的方向,此时句柄2指向的句柄1中的con,而句柄1依然是无内容的。
(不要理解成把句柄2中的内容写入句柄1,然后句柄1就有了句柄2 的内容!)
   1<&2,或1>&2,表示句柄1复制句柄2 的方向,句柄1此时指向句柄2 的con,这时的句柄1是有内容的。

下面的命令是可以显示句柄2的内容:
  1. dirrrr 1>&2 | more
  2. dirrrr 1<&2 | more
复制代码

TOP

回复 9# Hello123World

一个是cmd.exe,另一个是find.exe

TOP

返回列表