中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 17:23
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何将DOS的错误提示打印到一个txt文件里?
可打印版本  6,526 / 18
第1楼 IceFire 发表于 2004-03-04 00:00
初级用户 发帖 1 积分 104
如何将DOS的错误提示打印到一个txt文件里?
比如我运行一个自编的程序内容是将一个文件从一个目录COPY到另一个目录. 当该文件不存在时,DOS会提示说找不到文件.

现在我想将DOS提示的信息打印到一个txt文件中

应该怎么做呢?
第2楼 GOTOmsdos 发表于 2004-03-08 00:00
铂金会员 发帖 1,827 积分 5,154
试试这个个批处理
@echo off
copy \1dir\1.ext 2dir>3.txt
第3楼 qzwqzw 发表于 2004-03-09 00:00
银牌会员 发帖 636 积分 2,343
gotomsdos 的方法不行
第4楼 MYS 发表于 2004-03-09 00:00
元老会员 发帖 1,637 积分 5,170 来自 广东佛山
这样行不行?
if exist \1dir\1.ext copy \1dir\1.ext 2dir>3.txt
if not exist \1dir\1.ext echo File not found.
第5楼 qzwqzw 发表于 2004-03-10 00:00
银牌会员 发帖 636 积分 2,343
4楼的法子很取巧啊!可是这个File not found.不是copy发出的啊?不过,也好。如果楼主要求不高,这个也将就了。总比重定向错误设备要简单的多。
第6楼 moroko 发表于 2004-03-11 00:00
高级用户 发帖 198 积分 919
con >*.txt
第7楼 Climbing 发表于 2004-03-12 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
用lmod啊

copy dir1\file1.ext dir2 > lmod /L* > 3.txt

lmod是Horst Schaeffer的产品,他的产品好是好,但在中文系统下有些小问题(总出现Invalid keyboard code specified,然后就不能显示中文了),真希望他改进一下支持多国字符集。
Contact - Email: horst.schaeffer@gmx.net
Homepage: http://home.nikocity.de/horst.muc/int
第8楼 Wengier 发表于 2004-03-12 00:00
系统支持 发帖 10,521 积分 27,736
Horst的软件不用说了,他出的大多数软件,如WBAT等,均无法与汉字系统很好的配合。
第9楼 WisdomNil 发表于 2006-04-20 16:50
新手上路 发帖 2 积分 4
这个问题在纯DOS下就不能解决了?!

我用del *.*命令时,如果目录下没有文件就有出错误提示,或文件不能删除也一样,用楼上的办法就搞不定了,希望高手指点!
第10楼 kcdsw 发表于 2006-04-21 16:11
中级用户 发帖 179 积分 404
帅哥~~试试这个
第11楼 tsenix 发表于 2006-04-25 00:51
初级用户 发帖 61 积分 121 来自 HK
试试用errorlevel吧... 不过好像是把问题变得更复杂
第12楼 willsort 发表于 2006-04-25 17:19
元老会员 发帖 1,512 积分 4,432
Re WisdomNil:

因为在DOS中,错误设备不能被显式的重定向,同时del/dir等内部命令因为并非使用INT 21/AH=4Ch退出,因此出错时不会产生errrorlevel。

所以,迄今为止,在DOS命令行或批处理中实现错误转向文件输出是未解决的问题。我目前所想到的思路,是使用debug汇编脚本重定向错误设备或者截取屏幕缓冲区的输出到文件中,但是实现起来比较困难。
第13楼 arding 发表于 2006-05-11 15:52
初级用户 发帖 38 积分 90
Originally posted by kcdsw at 2006-4-21 16:11:
帅哥~~试试这个

经过试验,发现所谓错误有两种:
1。命令本身错误
2。参数错误

1。命令本身错误 的出错信息能被"2>"得到;
2。参数错误 的出错信息能被">"得到;

[ Last edited by arding on 2006-5-11 at 15:59 ]
第14楼 willsort 发表于 2006-05-11 19:53
元老会员 发帖 1,512 积分 4,432
Re arding:

所有错误,无论是无效命令名错误、无效命令参数错误还是命令执行过程中错误,均可分为两类:向标准错误stderr发出的和向标准输出stdout发出的。二者虽然缺省均指向控制台设备,但它们使用的仍然是不同的端口。

而 cmd 的 copy 命令是有些特殊的,因为它将许多错误都通过标准输出发出,所以我们用>file对这些错误信息进行重定向,但DOS和CMD下的大多数命令其错误信息通常都通过标准错误发出的。因此,你的二分法不具有普遍意义。

另外,楼主讨论的错误重定向至今仍限定在DOS环境下,CMD环境下的2>是不予讨论的。
第15楼 arding 发表于 2006-05-12 09:24
初级用户 发帖 38 积分 90
有点明白。我这里不方便使用纯DOS,而且也从来没有深究这些细节。你的意思是不是集中在这句话:

大多数命令其错误信息通常都通过标准错误发出的

如果这样,是不是用ERRORLEVEL或者2>就可以捕获几乎所有错误?

[ Last edited by arding on 2006-5-12 at 09:28 ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023