中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将DOS的错误提示打印到一个txt文件里?
楼 主 如何将DOS的错误提示打印到一个txt文件里? 发表于 2004-03-04 00:00 ·  中国 北京 鹏博士BGP
初级用户
积分 104
发帖 1
注册 2004-03-04 00:00
UID 19129
性别 男
状态 离线
比如我运行一个自编的程序内容是将一个文件从一个目录COPY到另一个目录. 当该文件不存在时,DOS会提示说找不到文件.

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

应该怎么做呢?
2 发表于 2004-03-08 00:00 ·  中国 广东 广州 电信
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
UID 7105
性别 男
状态 离线
试试这个个批处理
@echo off
copy \1dir\1.ext 2dir>3.txt
3 发表于 2004-03-09 00:00 ·  中国 山东 烟台 芝罘区 联通
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
UID 19350
性别 男
状态 离线
gotomsdos 的方法不行
4 发表于 2004-03-09 00:00 ·  中国 广东 佛山 三水区 电信
元老会员
★★★★
积分 5,170
发帖 1,637
注册 2002-10-16 00:00
UID 8
性别 男
来自 广东佛山
状态 离线
这样行不行?
if exist \1dir\1.ext copy \1dir\1.ext 2dir>3.txt
if not exist \1dir\1.ext echo File not found.
我的网志
http://hzmys.blog.163.com/
我的网盘
firststep.qjwm.com
fsmys.ys168.com
ssmys.ys168.com
www.brsbox.com/fsmys
www.brsbox.com/ssmys
www.brsbox.com/ccdos
5 发表于 2004-03-10 00:00 ·  中国 山东 烟台 莱山区 联通
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
UID 19350
性别 男
状态 离线
4楼的法子很取巧啊!可是这个File not found.不是copy发出的啊?不过,也好。如果楼主要求不高,这个也将就了。总比重定向错误设备要简单的多。
6 发表于 2004-03-11 00:00 ·  中国 黑龙江 牡丹江 中移铁通
高级用户
★★
积分 919
发帖 198
注册 2004-01-17 00:00
UID 15706
性别 男
状态 离线
con >*.txt
7 发表于 2004-03-12 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
用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 发表于 2004-03-12 00:00 ·  美国
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
UID 9
状态 离线
Horst的软件不用说了,他出的大多数软件,如WBAT等,均无法与汉字系统很好的配合。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

9 发表于 2006-04-20 16:50 ·  中国 湖北 武汉 电信
新手上路
积分 4
发帖 2
注册 2006-04-20 15:54
UID 54145
状态 离线
这个问题在纯DOS下就不能解决了?!

我用del *.*命令时,如果目录下没有文件就有出错误提示,或文件不能删除也一样,用楼上的办法就搞不定了,希望高手指点!
10 发表于 2006-04-21 16:11 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
帅哥~~试试这个

copy ..\楼主是帅哥.txt 2>帅哥是楼主.txt
11 发表于 2006-04-25 00:51 ·  中国 香港 环球全域电讯
初级用户
★★
积分 121
发帖 61
注册 2006-04-18 00:09
UID 54007
性别 男
来自 HK
状态 离线
试试用errorlevel吧... 不过好像是把问题变得更复杂
12 发表于 2006-04-25 17:19 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re WisdomNil:

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

所以,迄今为止,在DOS命令行或批处理中实现错误转向文件输出是未解决的问题。我目前所想到的思路,是使用debug汇编脚本重定向错误设备或者截取屏幕缓冲区的输出到文件中,但是实现起来比较困难。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
13 发表于 2006-05-11 15:52 ·  中国 甘肃 兰州 中移铁通
初级用户
积分 90
发帖 38
注册 2006-01-06 18:41
UID 48522
状态 离线
Originally posted by kcdsw at 2006-4-21 16:11:
帅哥~~试试这个

copy ..\楼主是帅哥.txt 2>帅哥是楼主.txt

经过试验,发现所谓错误有两种:
1。命令本身错误
2。参数错误
@echo off
echo 参数错误:>帅哥是楼主i.txt
echo ____________________>帅哥是楼主j.txt
echo 命令本身错误:>>帅哥是楼主j.txt
coby ..\楼主是帅哥.txt>>帅哥是楼主i.txt 2>>帅哥是楼主j.txt
::^^
copy 帅哥是楼主i.txt+帅哥是楼主j.txt errsum.txt
msg *<errsum.txt
del 帅哥是楼主i.txt
del 帅哥是楼主j.txt
del errsum.txt

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

[ Last edited by arding on 2006-5-11 at 15:59 ]
14 发表于 2006-05-11 19:53 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re arding:

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

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

另外,楼主讨论的错误重定向至今仍限定在DOS环境下,CMD环境下的2>是不予讨论的。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
15 发表于 2006-05-12 09:24 ·  中国 甘肃 兰州 中移铁通
初级用户
积分 90
发帖 38
注册 2006-01-06 18:41
UID 48522
状态 离线
有点明白。我这里不方便使用纯DOS,而且也从来没有深究这些细节。你的意思是不是集中在这句话:

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

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

[ Last edited by arding on 2006-5-12 at 09:28 ]
论坛跳转: