找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 40401|回复: 10

[文本处理] 【已解决】批处理如何最快的方式统计文本有多少行?

[复制链接]
发表于 2014-7-14 14:13:23 | 显示全部楼层 |阅读模式
本帖最后由 elec 于 2014-7-14 20:40 编辑

例如
1.txt有500行。统计出结果后 set /a n=500
2.txt有2300行。统计出结果后 set /a n=2300

这样的。
发表于 2014-7-14 14:20:42 | 显示全部楼层
  1. @echo off
  2. for /f %%a in ('type a.txt ^| find /c /v ""') do (
  3.     set "RowNum=%%a"
  4. )
  5. echo,%RowNum%
  6. pause
复制代码
 楼主| 发表于 2014-7-14 14:40:04 | 显示全部楼层
回复 2# DAIC


    计算13W行的文本大概用了12.47秒。。还有更快的方法吗?
发表于 2014-7-14 14:58:34 | 显示全部楼层
下载一个 grep.exe 试试
  1. grep -Fc "" 1.txt
复制代码
 楼主| 发表于 2014-7-14 17:44:23 | 显示全部楼层
不过我想将计算出的结果赋值给一个变量,能做到吗?
用管道?还是写入文件再读取?

有没有解决办法。。谢谢了!!
发表于 2014-7-14 18:28:06 | 显示全部楼层
  1. @echo off
  2. for /f %%i in ('grep -Fc "" 1.txt') do set lines=%%i
  3. echo %lines%
  4. pause
复制代码
发表于 2014-7-14 20:41:59 | 显示全部楼层
回复 6# storm8


    这个耗时几秒?
 楼主| 发表于 2014-7-14 23:50:55 | 显示全部楼层
本帖最后由 elec 于 2014-7-15 00:03 编辑

回复 7# Batcher


    第三方的工具速度不用说。不过用wc -l a.txt会更快一些
    测试a.txt  100W行  167M

    wc命令:0.11s
    grep命令:0.67s
    批处理:6.95s
发表于 2014-7-15 16:29:18 | 显示全部楼层
回复 7# Batcher


    这个代码就是用4楼的方法,加点处理解决5楼的问题。起赋值作用。时间应该跟4楼差不多

grep --help
-c, --count               print only a count of matching lines per FILE
 楼主| 发表于 2014-7-15 19:58:40 | 显示全部楼层
回复 9# storm8

    这个也行!!
  1. grep -c ".*" a.txt
复制代码
发表于 2014-7-15 21:49:01 | 显示全部楼层
回复 10# elec


    这种写法比4楼那种快多少?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 07:51 , Processed in 0.041684 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表