Board logo

标题: [求助]如何处理屏幕回显信息 [打印本页]

作者: pjzhong     时间: 2008-5-30 21:28    标题: [求助]如何处理屏幕回显信息
工作上需要用批处理编译C程序,指令大致如下: armcc a1.c armcc a2.c armcc a3.c …… 每一行指令执行时,后面会有一大堆警告信息,并在最后一行显示警告信息数目,如下: …… "..\a1.c", line 11989: Warning: C2870W: variable 'e' declared but not used "..\a1.c", line 11989: Warning: C2870W: variable 'd' declared but not used "..\a1.c", line 12597: Warning: C2207W: inventing 'extern int Sxad();' ..\a1.c: 23 warnings, 0 errors, 0 serious errors …… 问题: 1.每条指令能否不显示警告内容,但显示共有多少警告,即只显示最后一行? 2.如何将各条指令的警告数累加起来,并在所有指令执行完成后显示总的警告数? 3.某条指令执行后,如果error不为0,批处理能自动停止后面指令的执行?

作者: bat-zw     时间: 2008-5-30 21:50    标题: 没什么把握,试试吧:
注:n为要运行的最后一条指令的数字,如最后一个为armmcc a10.c则n为10。 第一问:
@echo off
for /l %%i in (1,1,n) do call :lp %%i
pause>nul&goto :eof
:lp
armcc a%1.c>temp.txt
for /f "delims=" %%i in (temp.txt) do set str=%%i
echo %str%&del /q temp.txt
第二问:
@echo off
for /l %%i in (1,1,n) do call :lp %%i
echo the number for wrong is %num%
pause>nul&goto :eof
:lp
armcc a%1.c>temp.txt
for /f "tokens=2 delims= " %%i in (temp.txt) do set str=%%i
set /a num+=%str%&del /q temp.txt
第三问:
@echo off
for /l %%i in (1,1,n) do armcc a%%i.c>nul|findstr /c:"0 errors"||goto :eof
[ Last edited by zw19750516 on 2008-5-30 at 09:53 PM ]

作者: pjzhong     时间: 2008-5-31 19:28
在此,先谢谢zw19750516,同时指出其实我的文件名不是简单的a1,a2,……我只是为了叙述方便才这样写的,只要把n定为总的文件数应该没问题吧?另外,这三条批处理指令改怎么放到我的批处理中呢?它们与我的编译指令该是什么位置关系?

作者: bat-zw     时间: 2008-6-1 01:11
Originally posted by pjzhong at 2008-5-31 19:28: 在此,先谢谢zw19750516,同时指出其实我的文件名不是简单的a1,a2,……我只是为了叙述方便才这样写的,只要把n定为总的文件数应该没问题吧?另外 ...
那请楼主贴出自己的批处理源码了。

作者: pjzhong     时间: 2008-6-1 14:03
谢谢zw19750516的指导! 我的源码很简单,就是: @echo off armcc -c -g sam.c armcc -c -g sammain.c armcc -c -g samkey.c armcc -c -g samdisk.c …… armcc -c -g usb.c 我的批处理就是这样的,中间约有100多个C文件,我就不全写了。 领导希望能统计总的warning数目。 请问zw19750516,我该怎么把你写的代码加进去呢? 另外,忽然想到一个问题,这么多指令产生的屏幕信息,能输出到同一个TXT文件中吗?