中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 对于英雄关于重定向程序的理解?
作者:
标题: 对于英雄关于重定向程序的理解? 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  对于英雄关于重定向程序的理解?

这是我学习英雄以下程序的理解,不知对不对!

@echo off
    echo 英雄是好男人!!!
    rem  此时,默认的1指向con,3~9指向为空
echo. 1>nul 3>nul
    rem  因要修改1的指向为nul,所以要对它的原有指向con备份,所以将1的原con
    rem  指向备份到3,即3指向是con
    rem  而要运行3>nul,即即3指向是con也要备份到4,即4的指向变成了con
   rem  执行完毕,3指向为nul,它是1原指向的备份,1从3取回备份的指向1>nul
    rem  3从4中取回被份指向即3>con
    echo 英雄是白痴!!!
echo 英雄是傻逼!!!
Rem  1>nul所以输出到nul,信息就不显示了
echo 这是怎么回事,难道就不能骂骂英雄吗??? 1>con 4>con
    rem  要将1的指向改为con,就要对原有的句柄指向1>nul备份
    rem  此时3>con非空,1的nul指向就备份到4,即4>nul
    rem  而要运行4>con,所以又将4>nul备份到5即5>nul
    rem  执行完毕后,4>con,所以1取回的句柄指向备份是con即1>con
    ren  因为1>con所以echo信息正常输出
总结:这里我觉得难以理解的是 “进行取回原有句柄指向备份的过程”比如这个程序,如
果是取回,那么4先取回呢?则4从5>nul取回就变成了4>nul,这时1在从4取回备
份的指向,不就变成了1>nul?那么echo信息不就输出到空设备了吗?
    所以我觉得这时就应该硬性理解“谁的优先级高,谁先进行取回原有句柄指向的操作”。
    这里,我理解0~2比3~9的优先级高。
    所以先进行1的句柄指向备份取回,此刻,4没有进行取回操作,还是4>con,那么1
从4中取回备份自然就是1>con,echo也自然输出的信息。
    pause
注意,修改句柄代号指向前要对原来的句柄代号指向进行备份,并且只能将原句柄代  号指向备份到句柄指向为空的数字标号里,执行完毕后要从备份中取回句柄指向。

2008-12-16 11:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xzyx
初级用户





积分 50
发帖 19
注册 2008-2-9
状态 离线
『第 2 楼』:  

谁先变谁先取回,这里相当于队列而非堆栈。

2008-12-16 12:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linge
新手上路





积分 11
发帖 10
注册 2008-11-28
状态 离线
『第 3 楼』:  

没看明白,

2008-12-16 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: