标题: [文本处理] 批处理如何批量统计文本文件里指定数字出现次数? [打印本页]
作者: ysrr2011 时间: 2014-9-28 16:37 标题: 批处理如何批量统计文本文件里指定数字出现次数?
比如要统计文件夹0内每个文本文件中941的各自出现次数,结果存入 “统计.txt”,格式类似于附件即可。请问如何编程?
作者: xxpinqz 时间: 2014-9-28 17:24
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('findstr "\<941\>" *.txt') do (
- set "str=%%~na"
- set /a #!str:+=@!+=1
- )
- (for /f "tokens=1-2 delims=#=" %%a in ('set #') do (
- set "str=%%a:%%b"
- echo,!str:@=+!
- ))>all.txt
复制代码
作者: apang 时间: 2014-9-28 20:23
本帖最后由 apang 于 2014-9-28 20:43 编辑
我也来一下:- @echo off & setlocal enabledelayedexpansion
- pushd "0\"
- set n=1
- (for /f "tokens=1,2 delims=:" %%a in ('findstr "\<941\>" *.txt') do (
- if defined a (
- if /i "%%~na" NEQ "!a!" (
- echo,!a!:!n!&set n=1
- ) else set /a n+=1
- )
- set "a=%%~na"
- ))>..\统计.txt
- echo,!a!:!n!>>..\统计.txt
- pause
复制代码
作者: apang 时间: 2014-9-29 00:00
突然发现 本题用 find 比 findstr 要方便得多- @echo off
- pushd "0\"
- (for /f "tokens=* delims=- " %%a in ('find /c "941" *.txt') do (
- echo,%%a
- ))>"%~dp0统计.txt"
- pause
复制代码
作者: CrLf 时间: 2014-9-29 06:15
话说这好像是 grep 的原生格式:- @grep -c "941" *.txt>"%~dp0统计.txt"
复制代码
作者: ysrr2011 时间: 2014-11-9 20:34
本帖最后由 ysrr2011 于 2014-11-10 00:25 编辑
- @echo off&setlocal enabledelayedexpansion
- for /L %%i in (000,1,999) do (
- for /f "delims=" %%a in ('findstr "\<%%i\>" *.txt') do (
- set "str=%%~na"
- set /a #!str:+=@!+=1
- )
- (for /f "tokens=1 delims=#=" %%a in ('set #') do (
- set "str=%%a“
- echo,!str:@=+!
- )))>"统计%%i.txt"
复制代码
如果不需要统计次数,只提取含该数值的文件,
以上程序尝试统计一组数值,执行结果的问题是
1:000-099的数值,无法运算,
2:100-999的数值,可以运算,但只有第一个结果正确,后面的结果会累加上前面的结果一起显示。
请问应该如何解决?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |