Board logo

标题: [文本处理] 批处理如何统计特定行的行数? [打印本页]

作者: 雷神WUWU    时间: 2016-7-12 20:08     标题: 批处理如何统计特定行的行数?

附件文件内容中“DESCRIPTION=”下面“DATA0=762.2642,1636.842_764.2941,1638.931_0”等这样的比较长的行是需要统计计数的,想要得到一个文本中类似这样的长行到底有多少行,如果文件中没有这样的长行就计为0.还有因为[B|DOT]或者[W|DOT]或[G25|DOT]或[G50|DOT] “DESCRIPTION=”下面的长行数值坐标总是一样的,一般是4倍关系,看这个能否用得到。
作者: pcl_test    时间: 2016-7-12 20:25

  1. @echo off
  2. set n=0
  3. for /f %%a in ('findstr /b "DATA[0-9][0-9]*=" "T566U161BC08.txt"') do set /a n+=1
  4. echo;%n%
  5. pause
复制代码

作者: 雷神WUWU    时间: 2016-7-12 20:56

回复 2# pcl_test
能不能给个通用的啊?文件不止一个,有的都没有“DATA0=762.2642,1636.842_764.2941,1638.931_0”那样的长行
作者: gawk    时间: 2016-7-12 22:06

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     set n=0
  5.     for /f %%j in ('type "%%i" ^| findstr /b "DATA[0-9][0-9]*="') do (
  6.         set /a n+=1
  7.     )
  8.     echo %%i: !!n!
  9. )
  10. pause
复制代码

作者: gawk    时间: 2016-7-12 22:21

回复 1# 雷神WUWU


    有问题请直接在论坛发帖讨论吧,不用给我发私信,我看到帖子一样会回复的,谢谢。
作者: 雷神WUWU    时间: 2016-7-12 22:26

回复 5# gawk
好吧,因为太菜,就想找几个热心人帮下忙,呵呵...
作者: gawk    时间: 2016-7-12 22:31

回复 6# 雷神WUWU


貌似论坛没有规定太菜的人不允许发帖啊
我应该可以算得上热心人之一,能帮上的一定帮,只是不习惯私信讨论技术问题。
作者: 雷神WUWU    时间: 2016-7-12 22:40

本帖最后由 雷神WUWU 于 2016-7-12 23:55 编辑

回复 7# gawk
刚网上查资料进到这个网站,不是太熟悉。
@echo off&
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
    setlocal enabledelayedexpansion
    for /f "delims=" %%b in ('type "%%a"') do (
        set /a num+=1
        set "str=%%b"        
        if !num! geq 1 (
          if "!str:~40!" neq "" set /a count+=1
        )
    )
    if defined keys echo;%%~na,!count!>>"%~dp0Result.csv"
    endlocal
)
pause
我弄了很久这个,那个0就是弄不好,要么全被我弄成0了
作者: 雷神WUWU    时间: 2016-7-12 22:47

回复 7# gawk
补充一下,你的代码不错。就是我一直纠结我先前弄得一个方案的代码,所以请教下
作者: GNU    时间: 2016-7-13 08:51

回复 8# 雷神WUWU


这个代码不像是解决顶楼的问题,你发过其它帖子是吗?
链接发出来吧,我过去看看。
作者: 雷神WUWU    时间: 2016-7-13 19:57

回复 10# GNU
我也是论坛到处查查看看,然后简单理解下,凑起来的,没啥基础,感觉能实现预期的一部分,就贴出来请教了,毕竟我观察了下文本存在长短不一的情况,可以从这方面下手试试,虽然这个方案针对预期可能并不是最优的,但条条大路通北京嘛。因为以前学过一点C语言之类的,if...else if...,但我写入代码中就提示不是内部命令,批处理这块刚接触,基础性的东西还蛮多的




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2