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

批处理计算一文本文件的行数

[复制链接]
发表于 2008-1-4 13:52:22 | 显示全部楼层 |阅读模式
先把下面的COPY到你电脑上保存为list.txt
  1. abcealsdf
  2. sadflkew
  3. s657
  4. pe34
  5.            
  6. 534


  7. as4

  8. 563djhuqe
  9. d
复制代码
写一批处理计算此文件有多少行

[ 本帖最后由 ieutk 于 2008-1-4 14:18 编辑 ]
发表于 2008-1-4 19:19:22 | 显示全部楼层
  1. @echo off
  2. for /f " delims=:" %%i in ('findstr /n "\<d\>" "list.txt"') do echo 共有:%%i行
  3. pause
复制代码
好像有内容一样的行就不行了
另外,这样也能,但想不通var值为什么是最后的值,而不是全部的值
@echo off
for /f " delims=:" %%i in ('findstr /n .* "list.txt"') do set var=%%i
echo %var%
pause

评分

参与人数 1PB +4 收起 理由
ieutk + 4 不错

查看全部评分

发表于 2008-1-4 21:29:20 | 显示全部楼层
@echo off
for /f " delims=:" %%i in ('findstr /n "\<b\>" "a.txt"') do echo 共有:%%i行
pause
这段代码还真没看懂,
\<d\>  不是精确匹配字符串么? 这里匹配 d  是什么意识?而且换成别的字符就不行了.
难道 d 有什么特殊含义?

@echo off
for /f " delims=:" %%i in ('findstr /n .* "list.txt"') do set var=%%i
echo %var%
pause
这段代码var的值当然是最后的值
因为用findstr /n  打印了行号后,再用冒号作分割符,%%i的值就是行号,从1到12
而var的值也是依次是1到12 到了最后,当然就是最后的值了.
发表于 2008-1-4 22:00:53 | 显示全部楼层
这里匹配 d  是什么意识?而且换成别的字符就不行了.
难道 d 有什么特殊含义?


想的太复杂了,这里的d只是本题中最后一行字符串的值,没什么特殊含义,呵呵
 楼主| 发表于 2008-1-5 00:17:20 | 显示全部楼层
@echo off
for /f " delims=:" %%i in ('findstr /n "\<d\>" "list.txt"') do echo 共有:%%i行
pause


这个代码可是可以,不过不太实际,如果文件最后不是d呢,所以还是用你下面的那个代码
发表于 2008-1-7 19:17:55 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1 delims=:" %%i in ('findstr /n .* a.txt') do set Line=%%i
  3. echo %Line%
  4. pause
复制代码
发表于 2008-2-19 13:10:55 | 显示全部楼层
历害历害,太历害了,我发现这个命令好难了
要是有像FOR那里面的通俗讲法就好了
发表于 2008-3-19 21:13:19 | 显示全部楼层
'findstr /n "\<d\>"   这个是什么意思?
 楼主| 发表于 2008-3-20 00:32:09 | 显示全部楼层
还请楼上兄弟另幵一贴来提问,以方便论坛的管理,多谢合作


'findstr /n "\<d\>"   这个是什么意思?


/N        在匹配的每行前打印行数。

"\<d\>" 是精确查找的意思

"\<......\>"  格式是这样的,中间的省略号代表你要精确查找的内容
发表于 2008-4-4 11:13:08 | 显示全部楼层
二楼for /f "delims=:" %%i in ('findstr /n "\<d\>" "1.txt"') do set var=%%i
里面的"\<d\>"改为".*d\>"或是"d\<"都可以 ,更奇怪的是:".*d\>"里面的d改为任一字母都行。。。是不是这个命令本身就不需要。
发表于 2008-4-27 19:13:44 | 显示全部楼层
findstr的/n参数很好用。
但感觉还是不够底层。每行的分割符其实是那个看不见的回车啊.
for /f %%i in (a.txt) do ...感觉就像是bug了.
发表于 2008-4-28 22:55:26 | 显示全部楼层
还请楼上兄弟另幵一贴来提问,以方便论坛的管理,多谢合作
引用:
'findstr /n "\<d\>"   这个是什么意思?
/N        在匹配的每行前打印行数。

"\<d\>" 是精确查找的意思

"\<......\>"  格式是这样的,中间的省略号代表你要精确查找的内容





谢谢你这么有耐心,学习.....
发表于 2008-6-10 23:45:06 | 显示全部楼层
终于搞懂了,for /f 默认循环第一列,所以findstr /n ....
1:abcealsdf
2:sadflkew
3:s657
4:pe34
5:
6:534
7:
8:
9:as4
10:
11:563djhuqe
12:d
后,用delims=:,可以分割出行号.....
发表于 2008-6-11 19:10:12 | 显示全部楼层
文件非空行数:
  1. findstr/n . list.txt|find /c /v ""
复制代码

文件总行数(包括空行):
  1. type list.txt|find /c /v ""
复制代码

评分

参与人数 3PB +17 技术 +1 收起 理由
zhouyongjun + 5 找这个贴找得好辛苦,留下记号先
rat + 1 Well Done
随风 + 12

查看全部评分

发表于 2008-6-11 19:32:23 | 显示全部楼层
楼上强!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 00:56 , Processed in 0.027428 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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