中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]IF命令的使用问题 上一主题 | 下一主题
trickster
初级用户




积分 63
发帖 33
注册 2006-12-4
状态 离线
『楼 主』:  [求助]IF命令的使用问题

我是一名菜鸟,最近刚刚开始学习批处理,在论坛中下了一套"MS-DOS6_2批处理文件高级指南"教程,其中有关于下面一段代码的描述(原文):
           if not exist io_text.bat dir >io_text.bat
此命令很直观,你可能会认为如果io_text.bat文件不存在,那么该批处理文件就会创建它.并将当前目录的文件清单赋给它,否则就什么也不做,遗憾的是,MS-DOS实际上并不如此运行. 当if命令中说明的命令用了至一文件的重定向时,MS-DOS就首先打开该文件以准备后面的输出. 接着MS-DOS进行if命令测试--在此例中是测试io_text.bat文件是否存在.由于ms-dos刚刚创建了此文件,所以它确确实实存在,这样if not exist 命令始终会失败,于是该命令执行后io_text.bat文件存在但内容为空

但在我测试过程中,io_text.bat文件却不为空,不知是我的理解出现偏差还是此文却有不妥之处,特此向各位请教.


[ Last edited by trickster on 2006-12-27 at 11:56 AM ]

2006-12-28 00:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rochan
初级用户





积分 40
发帖 14
注册 2006-12-27
状态 离线
『第 2 楼』:  

不是吧.我在我机子上 运行了一下这个命令...很正常啊..
存在则 不做任何动作..不存在 则生成..文件内容 是  dir命令  所回显的内容...

楼主,怎么会有这样的说法呢.

2006-12-28 04:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

  可能是MS-DOS里的if和CMD下面的if的分析机制不同吧。

  我在CMD下面测试的结果是预料之中的。


2006-12-28 06:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
trickster
初级用户




积分 63
发帖 33
注册 2006-12-4
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by lxmxn at 2006-12-27 05:39 PM:
  可能是MS-DOS里的if和CMD下面的if的分析机制不同吧。

  我在CMD下面测试的结果是预料之中的。

确实是这个原因以下是另一高人的回答:

在 MS-DOS 6.22 环境下测试,这本书所写内容为真,的确是建立了一个内容为空的文件,文件长度为0。

但是,在 Windows CMD 环境下测试,一切都会是象想像中的那样…生成了存有DIR目录列表内容的一个文件~:)

《MS-DOS6_2批处理文件高级指南》这本书的写作环境是在 MS-DOS 6.22 版本上完成的,有些内容不适合 Windows CMD 环境。
但书中所讲的基础知识多数适合学习~:) 。 [/quote]

2006-12-28 09:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 5 楼』:  

cmd下完全实现,msdos下分析是不是不允许有重名文件啊?

2006-12-28 10:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: