Board logo

标题: 请高手解释一下关于句柄输出的问题 [打印本页]

作者: pfjuifv     时间: 2006-10-3 05:52    标题: 请高手解释一下关于句柄输出的问题

>&,将一个句柄的输出写入到另一个句柄的输入中。
   <&,刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中。
这个我不是很明白怎么用能给解释一下吗?
来个列子吧?


──────────────── 版务记录 ────────────────
执行:namejm
原标题:请高手给解释一下?
现标题:请高手解释一下关于句柄输出的问题
说明:因原标题过于模糊,不便于论坛的搜索和管理,在本提示发表三日之后,
  楼主尚未更改标题,现由本人强制修改标题,并扣除楼主4点积分。
──────────────── 版务记录 ────────────────


[ Last edited by namejm on 2006-10-19 at 01:12 ]
作者: GOTOmsdos     时间: 2006-10-3 06:27
是> 不是 >&吧?

ECHO HELLO > FILE.TXT
把HELLO存到文件

DEBUG < DEBUGBAT.BAT (DEBUG代码)
运行DEBUG脚本

DEBUG < DEBUGIN.BAT > DEBUGOUT.TXT
运行DEBUG脚本,并把输出结果存到文件

还有管道符号 |,把前面的输出作为后面的输入

ECHO Y | DEL *.*
用Y字符作为DEL *.* 的 询问的应答

[ Last edited by GOTOmsdos on 2006-10-3 at 06:29 ]
作者: 不得不爱     时间: 2006-10-3 06:41
ECHO HELLO > FILE.TXT会把HELLO和一个空格存到文件
要不把最后的空格存到文件就应该是ECHO HELLO> FILE.TXT
作者: pengfei     时间: 2006-10-3 07:14
举个例子, 如:命令正确执行就是句柄1, 命令执行不成功就是句柄2.
请先运行这一段代码试试:
@echo off
dir /b ???.txt>file.txt
pause

运行后cmd窗口显示找不到文件. file.txt文件为空.

这说明命令正确执行返回的数据将重定向到file.txt中(也就是句柄1), 因为找不到文件句柄1也没有数据写入文本.

而执行不成功将显示错误信息, 也就是找不到文件(为句柄2)
这一段是句柄2的复制到句柄1.
运行后cmd窗口没有任何信息显示, 而找不到文件的提示会写入到file.txt中. 很显然句柄2被复制到句柄1中写入file.txt中.

@echo off
dir /b ???.txt>file.txt 2>&1
pause
我也不知道分析得对不对, 期待高手出来解惑...
作者: pengfei     时间: 2006-10-3 07:26

@echo off
echo.>mu.txt
dir /b mu.txt>file.txt
pause

运行这一段代码的结果是, 找到mu.txt(句柄1)写入到file.txt中. cmd窗口没有显示错误信息(句柄2). 因为是正常执行, 所以句柄1为mu.txt, 而句柄2为空.

运行这一段前请将file.txt删除.

@echo off
echo.>mu.txt
dir /b mu.txt>file.txt 1>&2
pause

运行结果是没有生成file.txt, 而是在cmd窗口显示mu.txt. 因为1>&2这一句将句柄1重定向到句柄2中, 也就是句柄1没有重定向到file.txt中, 而是显示在cmd窗口中.

作者: GOTOmsdos     时间: 2006-10-3 08:18
其实 ECHO HELLO> FILE.TXT 后
FILE.TXT里面仍然多个回车和换行的。。
共7个字节,而不是5个
作者: pengfei     时间: 2006-10-3 08:22
呵呵~  是多了个回车符, 2个字节.

@echo off
dir /b yyyyy.txt 1>1.txt 2>2.txt
pause

这一段句柄1重定向到1.txt为零字节. 句柄2为找不到文件.

[ Last edited by pengfei on 2006-10-3 at 08:33 ]
作者: pfjuifv     时间: 2006-10-3 08:54
还有一个我不是很明白的就%1  %%i  这两个%是什么意思?