如何将DOS的错误提示打印到一个txt文件里?
🖨 打印本页
标题:如何将DOS的错误提示打印到一个txt文件里?
作者:IceFire | 时间:2004-03-04 00:00 | 标题:如何将DOS的错误提示打印到一个txt文件里?
比如我运行一个自编的程序内容是将一个文件从一个目录COPY到另一个目录. 当该文件不存在时,DOS会提示说找不到文件.
现在我想将DOS提示的信息打印到一个txt文件中
应该怎么做呢?
作者:gotomsdos | 时间:2004-03-08 00:00
试试这个个批处理
@echo off
copy \1dir\1.ext 2dir>3.txt
作者:qzwqzw | 时间:2004-03-09 00:00
gotomsdos 的方法不行
作者:mys | 时间:2004-03-09 00:00
这样行不行?
if exist \1dir\1.ext copy \1dir\1.ext 2dir>3.txt
if not exist \1dir\1.ext echo File not found.
作者:qzwqzw | 时间:2004-03-10 00:00
4楼的法子很取巧啊!可是这个File not found.不是copy发出的啊?不过,也好。如果楼主要求不高,这个也将就了。总比重定向错误设备要简单的多。
作者:moroko | 时间:2004-03-11 00:00
con >*.txt
作者:Climbing | 时间:2004-03-12 00:00
用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
作者:Wengier | 时间:2004-03-12 00:00
Horst的软件不用说了,他出的大多数软件,如WBAT等,均无法与汉字系统很好的配合。
作者:WisdomNil | 时间:2006-04-20 16:50
这个问题在纯DOS下就不能解决了?!
我用del *.*命令时,如果目录下没有文件就有出错误提示,或文件不能删除也一样,用楼上的办法就搞不定了,希望高手指点!
作者:kcdsw | 时间:2006-04-21 16:11
帅哥~~试试这个
copy ..\楼主是帅哥.txt 2>帅哥是楼主.txt
作者:tsenix | 时间:2006-04-25 00:51
试试用errorlevel吧... 不过好像是把问题变得更复杂
作者:willsort | 时间:2006-04-25 17:19
Re WisdomNil:
因为在DOS中,错误设备不能被显式的重定向,同时del/dir等内部命令因为并非使用INT 21/AH=4Ch退出,因此出错时不会产生errrorlevel。
所以,迄今为止,在DOS命令行或批处理中实现错误转向文件输出是未解决的问题。我目前所想到的思路,是使用debug汇编脚本重定向错误设备或者截取屏幕缓冲区的输出到文件中,但是实现起来比较困难。
作者:arding | 时间:2006-05-11 15:52
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 ]
作者:willsort | 时间:2006-05-11 19:53
Re arding:
所有错误,无论是无效命令名错误、无效命令参数错误还是命令执行过程中错误,均可分为两类:向标准错误stderr发出的和向标准输出stdout发出的。二者虽然缺省均指向控制台设备,但它们使用的仍然是不同的端口。
而 cmd 的 copy 命令是有些特殊的,因为它将许多错误都通过标准输出发出,所以我们用>file对这些错误信息进行重定向,但DOS和CMD下的大多数命令其错误信息通常都通过标准错误发出的。因此,你的二分法不具有普遍意义。
另外,楼主讨论的错误重定向至今仍限定在DOS环境下,CMD环境下的2>是不予讨论的。
作者:arding | 时间:2006-05-12 09:24
有点明白。我这里不方便使用纯DOS,而且也从来没有深究这些细节。你的意思是不是集中在这句话:
大多数命令其错误信息通常都通过标准错误发出的
如果这样,是不是用ERRORLEVEL或者2>就可以捕获几乎所有错误?
[
Last edited by arding on 2006-5-12 at 09:28 ]
作者:willsort | 时间:2006-05-13 18:36
Re arding:
关于纯DOS的错误捕捉,我在12路就已提到。在此重申两点:
1、DOS没有句柄,所以不支持 1>nul 和 2>nul 的用法;
2、DOS的内部命令几乎都不支持ERRORLEVEL,所以其错误状态无法用 errorlevel 判定,而只能寻求其它方法判定,比如使用可替代的外部命令(xcopy替代copy),比如copy前后自己使用 if exist 判定文件的存在性。
作者:arding | 时间:2006-05-15 11:42
明白了,我以后会更加明确DOS 和 CMD 的区分。
作者:echolueng | 时间:2009-12-06 00:10 | 标题:这个应该不错
@echo off
copy \1dir\1.ext >3.txt
type 3.txt
pause
作者:sunhai1979 | 时间:2010-11-21 23:02
if exist 1.log goto co
echo 文件不存在!>2.log
type 2.log
del 2.log
pause>nul
exit
:co
copy 1.log \Personal\Desktop\1.txt>2.log
type 2.log
del 1.txt;1.log;2.log
pause>nul
来源:https://www.cn-dos.net/forum/viewthread.php?tid=10090 · 打印时间 2026-06-14 20:49