Originally posted by chenall at 2006-3-26 14:38:
指定了2次句柄3当然无法同时使用了,把第二个改成echo. 1>nul 4>nul看看
确实可以.
恢复分别用echo 2>con 5>con , echo 1>con 6>con,若是只想栮..
我们讨论的对象中都出现了两个 > ,用i,j表示0到9的数字,如果将句柄看作指向设备的指针,则默认时:
句柄 指向
stdin con
stdout con
stderr con
当命令cnd i>nul j>nul 中的第一个>被执行时,系统将的目标暂存于未用的句柄空间,如,已备命令结束时恢复。然而,第二个>使得暂存的内容被修改,于是给后续命令留下了影响。
实际上,cnd i>nul j>nul 又会将的原内容暂存于再一个未用空间内,所以
cnd 2>nul 3>nul 对输出的改变,能够用cnd 2>&3 4>&3恢复回来。
由于暂存位置由系统选择,作为用户无法左右,所以数值不能肯定。
(我的每次试验为了保证句柄空间的确定,都是重新进入cmd.)