[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何将批量质检记录格式文本,统计每个文本指定字符列出现次数。

本帖最后由 a000000_82 于 2013-7-31 19:47 编辑

文本数量0001.txt~9xxx.txt

如3524.txt内容为:

07a★☆☆★☆★☆☆★★★★★☆☆★☆☆☆★☆★★☆☆★☆★☆★☆☆★☆★☆☆★☆★☆★☆
18b★☆★★★★☆☆☆☆★★★★☆★☆★★★★★★☆☆★☆☆☆★☆☆☆☆★☆★★☆★★☆☆
22b★☆★★★★☆★★☆★★★☆☆★★★☆★☆★★☆☆★☆☆☆★★☆★☆★☆★★☆☆★☆☆

每个文本行数不变,列数不固定。

需统计列指定字符为:





用以上字符统计所有文本指定字符列出现的次数,

并将统计文本名及出现次数写入(检统.txt)文本。

(检统.txt)文本内容为:

0001.txt:05
2xxx~~~~
3524.txt:02
7xxx~~~~
9xxx.txt:00








望各位大神帮帮忙!!谢谢各位达人~~~
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 weichenxiehou 于 2013-7-31 19:35 编辑

回复 1# a000000_82
好久没写批了,速度实在是慢啊。
  1. @echo off&setlocal enabledelayedexpansion
  2. (for %%a in (*.txt) do (
  3.   set/a n=0,m=0,total=0
  4.   for /f %%b in ('type %%a') do (
  5.     set/a n+=1
  6.     set line!n!=%%b
  7.   )
  8.   call :check
  9.   echo,%%a:!total!
  10. ))>result.txt
  11. start result.txt
  12. goto :eof
  13. :check
  14. if "!line1:~%m%,1!!line2:~%m%,1!!line3:~%m%,1!"=="★☆☆" set/a total+=1
  15. set/a m+=1
  16. if not "!line1:~%m%,1!"=="" goto :check
复制代码
1

评分人数

看得多说得多,远比不上写得多。

TOP

很好,谢谢weichenxiehou帮忙!

TOP

每个文件,只有3行么?
我觉得处理的逻辑,应该首先行列转置,然后搞行搜索。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

本帖最后由 CrLf 于 2013-8-1 16:34 编辑
  1. sed "s/./&\n/g" ????.txt|sort|uniq -c|findstr "★ ☆"
复制代码
  1. for %%a in (★ ☆) do type *.txt 2>nul|gawk -v RS="%%a" "END{print NR-1,RS}" a.txt|more
复制代码

TOP

回复 2# weichenxiehou


计算字符串长度,可以看看plp的帖子http://bbs.bathome.net/viewthread.php?tid=11799
拓展下,不在乎效率的话可以简单这样写:
  1. set str=测试123
  2. cmd /u /v /c echo;!str!>a.txt
  3. for %%a in (a.txt) do set /a size=%%~za/2-2
  4. echo %size%
复制代码

TOP

回复 5# CrLf
呵呵,CRLF最近是不是回帖太多,没有仔细看清题意啊?楼主的意思是三行相同位置的字符的组合满足一定条件的次数。
看得多说得多,远比不上写得多。

TOP

回复 7# weichenxiehou


    汗...按列分割麻烦点:
  1. gawk -F "" "{if(FNR<3){for(i=1;i<=NF;i++)ar[FNR,i]=$i}else{n=0;for(;i--;){if(ar[1,i] ar[2,i] $i==\"★☆☆\")n++};print FILENAME \":\" n}}" *.txt>检统.txt
复制代码

TOP

返回列表