[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
find /c /v ""
这是什么意思呢,居然结果直接就是个数字...不解..

TOP

  1. @echo off
  2. for /f "tokens=1 delims=:" %%i in ('findstr /n .* a.txt') do set a=%%i
  3. echo %a%&pause
复制代码
(*^_^*)

TOP

14楼的好牛,学到了find的用法

TOP

ding 14L.
Use the debug.exe:
  1. @for /f "skip=1 tokens=2" %%a in ('more /e +1 "%~f0"^|debug^|find ":0110"') do @set/an=0x%%a-4&call echo %%n%%&pause>nul&exit/b
  2. a100
  3. CMP     BYTE PTR [BX+0111],0D
  4. JNZ     010B
  5. INC     BYTE PTR [0110]
  6. INC     BX
  7. LOOP    0100
  8. INT     20
  9. nlist.txt
  10. l111
  11. g
  12. d110l1
  13. q
复制代码

TOP

楼上的汇编写的什么,感觉您好牛啊!
麻烦注释下。。。3Q!

TOP

find 命令真厉害!!

TOP

find /o 法:
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /o .* list.txt') do set /a n+=1
  3. echo 总共有%n%行!&pause>nul
复制代码
(*^_^*)

TOP

回复 22楼 的帖子

加上多余的/o开关会影响效率的吧?

其它几种方法:
  1. @echo off
  2. for /f "tokens=1 delims=:" %%a in ('findstr /n .* a.txt') do (
  3.     set RowNum=%%a
  4. )
  5. echo %RowNum%
  6. rem 10万行文本的测试结果:3分14.46秒
  7. rem 15:45:22.25
  8. rem 100000
  9. rem 15:48:36.71
复制代码
  1. @echo off
  2. for /f "tokens=2 delims=:" %%a in ('find /v /c "" a.txt') do (
  3.     set "RowNum=%%a"
  4.     goto :print
  5. )
  6. :print
  7. set "RowNum=%RowNum: =%"
  8. echo %RowNum%
  9. rem 10万行文本的测试结果:8.95秒
  10. rem 15:54:04.05
  11. rem 100000
  12. rem 15:54:13.00
复制代码
  1. @echo off
  2. for /f %%a in (a.txt) do (
  3.         set /a RowNum+=1
  4. )
  5. echo,%RowNum%
  6. rem 10万行文本的测试结果:5.20秒
  7. rem 15:51:30.55
  8. rem 100000
  9. rem 15:51:35.75
复制代码
  1. @echo off
  2. for /f %%a in ('type a.txt ^| find /c /v ""') do (
  3.         set "RowNum=%%a"
  4. )
  5. echo,%RowNum%
  6. rem 10万行文本的测试结果:2.92秒
  7. rem 15:57:54.64
  8. rem 100000
  9. rem 15:57:57.56
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23楼 的帖子

针对这个题目(list.txt文本中只有很少的内容),没有考虑效率。
当然,如果list.txt中的内容很多的话,效率的确是问题!!!
我只是想着一题多解。
谢谢指正。
(*^_^*)

TOP

  1. @echo off
  2. for /f %%i in ('findstr  /n  "$" a.txt') do  set/a a+=1
  3. echo %a%
  4. pause
复制代码

TOP

回复 25楼 的帖子

哥们,好像少了一行?

研究发现,当a.txt中最后的光标放在最后一行的下一行时,计算正确。
如果最后的光标跟最后一行是一行,计算结果少一行。
所以  "$"  效果不是很好。

建议,还是把"$" 改成 ".*"

[ 本帖最后由 keen 于 2009-5-6 09:40 编辑 ]
(*^_^*)

TOP

我也来试试

  1. @echo off
  2. for /f "tokens=1 delims=:" %%i in ('findstr /n .* a.txt') do set a=%%i
  3. echo 总行数(包括空行)是:%a%
  4. set/a b=0
  5. for /f "tokens=1 delims=:" %%i in ('findstr /n . a.txt') do set/a b+=1
  6. echo 总行数(扣除空行)是:%b%
  7. pause
复制代码

[ 本帖最后由 sjzong 于 2009-5-6 23:04 编辑 ]

TOP

回复 16楼 的帖子

find /c /v "" :将显示不包含指定字符串的行数。指定字符串为分号内的内容,(这边""我认为是空的,不知这样认为行吗?)
例如:find /c /v "a"  是计算不包括字符a的行的总数
假设有a.txt文件,内容如下:
acbda
dendf
sdds
a
b
de
运行命令 find /c /v "a" a.txt
结果:4
运行命令 find /c /v "d" a.txt
结果:2

[ 本帖最后由 sjzong 于 2009-5-6 23:36 编辑 ]

TOP

原帖由 plp626 于 2008-6-11 19:10 发表
文件非空行数:
findstr/n . list.txt|find /c /v ""
文件总行数(包括空行):
type list.txt|find /c /v ""

文件非空行数:
复制内容到剪贴板代码:
findstr/n . list.txt|find /c /v ""文件总行数(包括空行):
复制内容到剪贴板代码:
type list.txt|find /c /v ""很强

TOP

findstr /xvn .* a.txt

for /f "delims=:" %%a in ('findstr /xvn .* a.txt') do (echo 总有:%%a行)




find /c /v /n "" a.txt
for /f "tokens=2 delims=:" %%a in ('find /c /v /n "" a.txt') do (echo 总有:%%a行)

[ 本帖最后由 lovelymorning 于 2009-6-29 16:12 编辑 ]

TOP

返回列表