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

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

先把下面的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 编辑 ]
不大可能的事也许今天实现,根本不可能的事也许明天会实现

  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
1

评分人数

TOP

@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 到了最后,当然就是最后的值了.
技术问题请到论坛发帖求助!

TOP

这里匹配 d  是什么意识?而且换成别的字符就不行了.
难道 d 有什么特殊含义?


想的太复杂了,这里的d只是本题中最后一行字符串的值,没什么特殊含义,呵呵

TOP

@echo off
for /f " delims=:" %%i in ('findstr /n "\<d\>" "list.txt"') do echo 共有:%%i行
pause


这个代码可是可以,不过不太实际,如果文件最后不是d呢,所以还是用你下面的那个代码
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

  1. @echo off
  2. for /f "tokens=1 delims=:" %%i in ('findstr /n .* a.txt') do set Line=%%i
  3. echo %Line%
  4. pause
复制代码
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

历害历害,太历害了,我发现这个命令好难了
要是有像FOR那里面的通俗讲法就好了

TOP

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

TOP

还请楼上兄弟另幵一贴来提问,以方便论坛的管理,多谢合作


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


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

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

"\<......\>"  格式是这样的,中间的省略号代表你要精确查找的内容
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

二楼for /f "delims=:" %%i in ('findstr /n "\<d\>" "1.txt"') do set var=%%i
里面的"\<d\>"改为".*d\>"或是"d\<"都可以 ,更奇怪的是:".*d\>"里面的d改为任一字母都行。。。是不是这个命令本身就不需要。

TOP

findstr的/n参数很好用。
但感觉还是不够底层。每行的分割符其实是那个看不见的回车啊.
for /f %%i in (a.txt) do ...感觉就像是bug了.

TOP

还请楼上兄弟另幵一贴来提问,以方便论坛的管理,多谢合作
引用:
'findstr /n "\<d\>"   这个是什么意思?
/N        在匹配的每行前打印行数。

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

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





谢谢你这么有耐心,学习.....
一天天学习,一天天进步.

TOP

终于搞懂了,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=:,可以分割出行号.....

TOP

文件非空行数:
  1. findstr/n . list.txt|find /c /v ""
复制代码

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

评分人数

TOP

楼上强!
技术问题请到论坛发帖求助!

TOP

返回列表