标题: [文本处理] 批处理如何统计文本每行内容的字符个数和全文字符个数? [打印本页]
作者: 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
不是没人帮忙,只是批处理做这种事的效率太低了,没人愿做,我就试试看吧,不知道楼主是不是这个意思
不支持特殊字符...- @echo off&setlocal enabledelayedexpansion
- echo.&set /p in=请拖入文件:&echo.&echo 正在处理文件,请稍候...
- for /f "delims=" %%a in ('type %in%') do (
- set "str=%%a"&set "m=0"
- set /a "n+=1"
- set "#!n!=%%a"
- call :count_
- )
- :agn
- set "choi="
- echo.&set/p choi=请输入要查找的行(回车显示全文字符数):
- if not defined choi (echo %all%&echo.&echo 按任意键退出...&pause>nul&goto :eof)
- if %choi% gtr %n% echo 文件没有那么多行^^^!&goto :agn
- echo.&echo 第%choi%行有!_%choi%!个字符,内容如下:&echo !#%choi%!
- goto :agn
- :count_
- if "!str!"=="" (
- set /a "all=all+m"&set "_%n%=%m%"&goto :eof
- ) else (
- set /a "m+=1"
- set "str=!str:~1!"
- goto :count_
- )
复制代码
作者: pcl_test 时间: 2016-9-8 11:25
本帖最后由 pcl_test 于 2016-9-8 11:47 编辑
- #*第三方http://www.bathome.net/s/tool/index.html?key=gawk
- #*&cls&gawk -f "%~f0" "文本.txt">con&pause&exit
- BEGIN{
- space=1; #设置是否统计空格和制表符,0为不统计,1为统计
- s=0;
- }
- {
- if(!space){
- gsub(/[[:space:]]+/,"");
- a=length($0);s+=a;print "["a"]"$0;
- }else{
- a=length($0);s+=a;print "["a"]"$0;
- }
- }
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |