中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请高手解释一下关于句柄输出的问题
作者:
标题: 请高手解释一下关于句柄输出的问题 上一主题 | 下一主题
pfjuifv
初级用户





积分 68
发帖 15
注册 2005-11-23
状态 离线
『楼 主』:  请高手解释一下关于句柄输出的问题

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


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


[ Last edited by namejm on 2006-10-19 at 01:12 ]

   此帖被 -2 点积分     点击查看详情   
评分人:【 namejm 分数: -4  时间:2006-10-19 01:12
评分人:【 kootoo 分数: +2  时间:2007-12-27 22:29


2006-10-3 05:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 2 楼』:  

是> 不是 >&吧?

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:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 3 楼』:  

ECHO HELLO > FILE.TXT会把HELLO和一个空格存到文件
要不把最后的空格存到文件就应该是ECHO HELLO> FILE.TXT



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-3 06:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 4 楼』:  

举个例子, 如:命令正确执行就是句柄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
我也不知道分析得对不对, 期待高手出来解惑...

2006-10-3 07:14
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 5 楼』:  


@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窗口中.


2006-10-3 07:26
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 6 楼』:  

其实 ECHO HELLO> FILE.TXT 后
FILE.TXT里面仍然多个回车和换行的。。
共7个字节,而不是5个

2006-10-3 08:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 7 楼』:  

呵呵~  是多了个回车符, 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 ]

2006-10-3 08:22
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
pfjuifv
初级用户





积分 68
发帖 15
注册 2005-11-23
状态 离线
『第 8 楼』:  

还有一个我不是很明白的就%1  %%i  这两个%是什么意思?

2006-10-3 08:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: