标题: [文本处理] 批处理如何计算目录中含NG字符的文本个数? [打印本页]
作者: sinokaire 时间: 2012-5-10 09:43 标题: 批处理如何计算目录中含NG字符的文本个数?
请问,D:\log目录中有3000个文本,命名无规则。
如何计算这3000个文本中,有多少个文本的内容是含有“NG”字符的?
作者: yangfengoo 时间: 2012-5-10 10:28
- for %%a in (*.txt) do find "NG" %%a&&set/A n+=1
- cls&call echo %%n%%
- pause
复制代码
作者: sinokaire 时间: 2012-5-10 11:08
前辈,我试了下,好像不行,运行完后,没有统计结果出来。
文本的名字:A1853361A 0036133-1213_201204171621.txt
文本的内容:
0,2012041716212569,1A01STS00-600-G,A1853361A 0036133-1213,0,NG
0,2012041716212569,1A01STS00-600-G,A1853361A 0036133-1213,4,OK
1,2012041716212569,1A01STS00-600-G,A1853361A 0036133-1213,0,NG,1,0,432,213,216,889
1,2012041716212569,1A01STS00-600-G,A1853361A 0036133-1213,0,NG,1,213,432,213,216,1044
是什么原因? 文件名过长么? 在运行的CMD窗口里看到的信息是:
作者: yangfengoo 时间: 2012-5-10 11:23
for %%a in (*.txt) do find "NG" "%%a"&&set/A n+=1
cls&call echo %%n%%
pause
文件名有空格的问题,没注意。
作者: sinokaire 时间: 2012-5-10 12:05
回复 4# yangfengoo
好用了,嘿嘿! 谢谢您!
作者: gawk 时间: 2012-5-10 12:58
回复 4# yangfengoo - type *.txt 2>nul | find /c "NG"
复制代码
作者: lvsehuaxue 时间: 2012-5-10 21:38
二楼代码不对。如果这样的话,所得到的n值可能远远大于内容含有ng的文本数,因为,文本是分行解析的。
作者: lvsehuaxue 时间: 2012-5-10 21:49
- @echo off
- for %%i in (*.txt) do (
- set "flag="
- find /i "ng" "%%i">nul 2>nul&&(
- if not defined flag set /a n+=1
- set flag==
- )
- )
- echo %n%
- pause
复制代码
作者: gawk 时间: 2012-5-10 22:10
回复 7# lvsehuaxue
能否给点测试数据来证明2楼代码什么情况下会出错?
作者: powerbat 时间: 2012-5-11 06:22
- findstr /m NG *.txt | find /c /i "txt"
复制代码
作者: 秋风·飞扬 时间: 2012-5-11 10:49
回复 6# gawk
赞同这样简单的代码。亲们,不要老for啊
作者: lvsehuaxue 时间: 2012-5-12 11:35
回复 9# gawk
经过测试2楼不错,我画蛇添足。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |