Board logo

标题: 怎么显示一文本的行数(总数) [打印本页]

作者: scriptor     时间: 2007-2-26 09:07    标题: 怎么显示一文本的行数(总数)

如题。
作者: scriptor     时间: 2007-2-26 09:31
for /f "delims=" %%i in (l.txt) do (set/a num+=1)

echo len=%num%

但是以行中若是回车符号,结果就不对,怎么改,谢谢!
作者: vkill     时间: 2007-2-26 09:48
看你要不要空行和开头是;的行了
作者: scriptor     时间: 2007-2-26 09:57
都要
只要一行中有字符,不管是什么字符

包括只有一个回车符号的行

[ Last edited by scriptor on 2007-2-25 at 09:42 PM ]
作者: vkill     时间: 2007-2-26 11:00


  Quote:
Originally posted by scriptor at 2007-2-26 09:57:
都要
只要一行中有字符,不管是什么字符

包括只有一个回车符号的行

[ Last edited by scriptor on 2007-2-25 at 09:42 PM ]

那还是用sed好了 sed -n $= life
因为当文件中有空行时用findstr /N . life还是会忽略空行的
作者: scriptor     时间: 2007-2-26 11:23
我的l.txt的内容是:
w

e
我的bat文件是:
@echo off
for /f "delims=" %%i in ('find /v /i /n "" l.txt') do (set/a num+=1)
echo len=%num%
pause>nul


结果为4,但是只有三行啊??
难道要这样减去1才对?这是什么道理?
还有别的方法不?
作者: slore     时间: 2007-2-26 11:45
脚本吧
作者: scriptor     时间: 2007-2-26 11:53
你是说用vbs或js?

那个当然可以。可是我要的是bat的
作者: xycoordinate     时间: 2007-2-26 23:07
@echo off
setlocal enabledelayedexpansion
set i=0
for /f %%a in (1.txt) do (
  set /a i+=1
  echo !i! %%a >>1new.txt
)

不能包括空行!

[ Last edited by xycoordinate on 2007-2-26 at 10:10 AM ]
作者: qjbm     时间: 2007-2-26 23:52
scriptor兄
给你个变态方法!!哈哈利用一下SET /A的小BUG
@ECHO %DBG% OFF & SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F %%i IN ('findstr /n . l.txt') DO SET /A LEN=%%i 2>nul
ECHO %LEN%

作者: lxmxn     时间: 2007-2-27 00:01

  可以处理空行及包含其它字符的行:
@echo off
for /f "tokens=1 delims=:" %%a in ('findstr /n .* 1.txt') do set a=%%a
echo The length of file 1.txt is %a%
pause&exit/b0

作者: zh159     时间: 2007-2-27 00:02
10 楼的效果和:
@echo off
FOR /F "delims=:" %%i IN ('findstr /n . a.txt') DO SET LEN=%%i
ECHO %LEN%
pause
是一样的,利用了set/a去除了数字后面的“:”字符

SET LEN=%%i:设置LEN等于findstr /n显示的行数(不用计数),包含所有行

[ Last edited by zh159 on 2007-2-26 at 11:04 AM ]
作者: xycoordinate     时间: 2007-5-5 10:47


  Quote:
Originally posted by zh159 at 2007-2-27 00:02:
10 楼的效果和:
@echo off
FOR /F "delims=:" %%i IN ('findstr /n . a.txt') DO SET LEN=%%i
ECHO %LEN%
pause
是一样的,利用了set/a去除了数字后面的“:”字符

SET LEN=%%i:设置LEN等于findstr /n显示的行数(不用计数),包含所有行

10楼的,主要是用了2>nul,妙!!!

[ Last edited by xycoordinate on 2007-5-5 at 10:49 AM ]
作者: hizebra     时间: 2007-12-24 01:10
look!
<a href="http://www.cn-dos.net/forum/viewthread.php?tid=33878&fpage=1&highlight=%E8%A1%8C%E6%95%B0"  target="_blank">批处理中如何判断一个文本中的行数</a>
作者: ZJHJ     时间: 2007-12-24 09:03
没明白?为什么速度比
find /v /c ""  1.txt>cs.txt
for /f "tokens=2 delims=:" %%i in (cs.txt) do @echo %%i
慢很很多呢??
作者: terse     时间: 2007-12-24 10:59
觉得这样也不错
@echo off
type a.txt|find /v /c ""
pause

作者: lvjing79     时间: 2007-12-31 16:11


  Quote:
Originally posted by terse at 2007-12-24 10:59 AM:
觉得这样也不错
@echo off
type a.txt|find /v /c ""
pause

这个方法效率最高,很快就能出结果了。
作者: everest79     时间: 2007-12-31 18:53
type a.txt|find /v /c ""要比find /v /c "" a.txt慢