Board logo

标题: [文本处理] 批处理如何统计文本每行内容的字符个数和全文字符个数? [打印本页]

作者: jellyhk    时间: 2008-11-15 03:23     标题: 批处理如何统计文本每行内容的字符个数和全文字符个数?

本帖最后由 pcl_test 于 2016-9-8 11:15 编辑

想实现下面的功能!不知道行不!我想了半天就是想不出来!
有文本a.txt:(文本内容会变所以请帮忙把代码中要注意的地方标下)
12345
12345678
1234
123
1
2
3

1:查询第一行共有多少字符?(无空格)
2:查询第 三行有多少字符?(无空格)
3:查询全文共有多少字符?(无空格)
-------------------------------------------------请把代码中搞顶空格的地方用颜色区分下!我好学习学习-----
4:注意:如果内容第1行或第2行或第N行带有空格或多个空格该如何做!(注意别把空格给忽略了他也要算)
--------------------------------------------------------------------------------请帮忙写代码!
我察看的方法用批处理我写不出来呵呵!
我用的命令
findstr /o . a.txt

[ 本帖最后由 jellyhk 于 2008-11-16 06:26 编辑 ]
作者: pusofalse    时间: 2008-11-15 03:49

如果全是半角字符,可以直接用%%~za - (总行数*2) 获取总字符数。
findstr /o的用法论坛有太多了,搜索了吗,请善用搜索功能。

[ 本帖最后由 pusofalse 于 2008-11-15 19:45 编辑 ]
作者: batman    时间: 2008-11-15 10:22

看了楼主的几个求助贴均没有将问题描述清楚,还请楼主在发贴求助时多注意下文字上的组织了。
友情提示:请注意错别字
作者: sylovanas    时间: 2008-11-15 10:39

去空行

FOR /f "token=*" %%A in (a.txt) do echo %%A

去空格
SET "VAR=%VAR: =%"
作者: zqz0012005    时间: 2008-11-15 12:42     标题: 回复 4楼 的帖子

FOR /f "token=*" %%A in (a.txt) do echo %%A
会去掉行首空格,应该用
FOR /f "delims=" %%A in (a.txt) do echo %%A
作者: jellyhk    时间: 2008-11-16 06:25

我想各位可能没理解我的意思!
我的意思是想知道有多少字符!
2楼的“半角字符”不懂是什么?
3楼的我把内容改了下。
4楼的搞错我意思了!我不是想去掉空格!是查询字符有多少。
作者: Batcher    时间: 2008-11-16 12:43     标题: 回复 6楼 的帖子

google搜索"什么是半角字符"
作者: jellyhk    时间: 2008-11-17 01:13

蛾!
我看了下什么是半角字符!
我的这个是半角字符!
请帮忙回答下!6楼的问题
作者: jellyhk    时间: 2008-11-18 06:23

我顶!
难道就没人帮忙?
作者: more    时间: 2008-11-18 13:42

不是没人帮忙,只是批处理做这种事的效率太低了,没人愿做,我就试试看吧,不知道楼主是不是这个意思
不支持特殊字符...
  1. @echo off&setlocal enabledelayedexpansion
  2. echo.&set /p in=请拖入文件:&echo.&echo 正在处理文件,请稍候...
  3. for /f "delims=" %%a in ('type %in%') do (
  4.    set "str=%%a"&set "m=0"
  5.    set /a "n+=1"
  6.    set "#!n!=%%a"
  7.    call :count_
  8. )
  9. :agn
  10. set "choi="
  11. echo.&set/p choi=请输入要查找的行(回车显示全文字符数):
  12. if not defined choi (echo %all%&echo.&echo 按任意键退出...&pause>nul&goto :eof)
  13. if %choi% gtr %n% echo 文件没有那么多行^^^!&goto :agn
  14. echo.&echo 第%choi%行有!_%choi%!个字符,内容如下:&echo !#%choi%!
  15. goto :agn
  16. :count_
  17. if "!str!"=="" (
  18.    set /a "all=all+m"&set "_%n%=%m%"&goto :eof
  19. ) else (
  20.    set /a "m+=1"
  21.    set "str=!str:~1!"
  22.    goto :count_
  23. )
复制代码

作者: pcl_test    时间: 2016-9-8 11:25

本帖最后由 pcl_test 于 2016-9-8 11:47 编辑
  1. #*第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. #*&cls&gawk -f "%~f0" "文本.txt">con&pause&exit
  3. BEGIN{
  4.     space=1;  #设置是否统计空格和制表符,0为不统计,1为统计
  5.     s=0;
  6. }
  7. {
  8.     if(!space){
  9.         gsub(/[[:space:]]+/,"");
  10.         a=length($0);s+=a;print "["a"]"$0;
  11.     }else{
  12.         a=length($0);s+=a;print "["a"]"$0;
  13.     }
  14. }
  15. END{print (space?"":"不")"包括空格、制表符总计:"s"个字符"}
复制代码

作者: WBATW    时间: 2023-4-8 15:44

回复 11# pcl_test
代码速度很快哦。但是,怎么输出到文本呢?
作者: buyiyang    时间: 2023-4-8 16:44

回复 12# WBATW


    第二行
#*&cls&gawk -f "%~f0" "文本.txt">result.txt&pause&exit




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2