标题: [文本处理] [已解决]批处理怎样把多文本中重复内容分开统计数目? [打印本页]
作者: playinthesky 时间: 2011-8-24 16:33 标题: [已解决]批处理怎样把多文本中重复内容分开统计数目?
文本 111.txt 内容复制代码
文本 222.txt 内容复制代码
本想来统计分别数目却发现不对- @echo off&setlocal enabledelayedexpansion
- for %%a in (*.txt) do (
- for /f "delims=" %%b in (%%a) do (
- set "str=%%b"
- for %%i in (!str!) do (
- set/a _%%i+=1
- echo %%i 出现 !_%%i!次
- )
- )
- )
- pause
复制代码
运行结果为- aa 出现 1次
- bb 出现 1次
- cc 出现 1次
- dd 出现 1次
- ee 出现 1次
- ff 出现 1次
- aa 出现 2次
- bb 出现 2次
- aa 出现 3次
- bb 出现 3次
- cc 出现 2次
- dd 出现 2次
- hh 出现 1次
- dd 出现 3次
- hh 出现 2次
- 请按任意键继续. . .
复制代码
我的目的是想 将
显示成
------------------------------------------------------
aa 出现 2 次
bb 出现 2 次
cc 出现 1 次
dd 出现 1 次
ee 出现 1 次
ff 出现 1 次
-----------------------------------------------------
aa 出现 1 次
bb 出现 1 次
cc 出现 1 次
dd 出现 2 次
hh 出现 2 次
-------------------------------------------------------
就是说,程序读入各个文本的时候,读完一个文本之后可以让计数器归零,重新开始新的统计下一个文本并输出,而不是累加,可以做的到么?谢谢大家。
作者: ArdentMan 时间: 2011-8-24 16:50
本帖最后由 ArdentMan 于 2011-8-24 16:56 编辑
- @Echo Off&SetLocal EnableDelayedExpansion
- For %%i In (*.txt) Do (
- SetLocal
- For /F "delims=" %%j In (%%i) Do Set /A _%%j+=1
- For /F "tokens=1,2 delims==_" %%j In ('Set _') Do Echo %%j出现%%k次
- EndLocal&Echo,
- )
- Pause>Nul
复制代码
作者: playinthesky 时间: 2011-8-24 18:16
回复 2# ArdentMan
非常感谢~!!!
作者: playinthesky 时间: 2011-8-24 18:43
回复 2# ArdentMan
SetLocal
为什么要 setlocal?
作者: ArdentMan 时间: 2011-8-24 20:38
用SetLocal和EndLocal来设置其间的变量区域化
唉,详细说起来比较复杂~~~
楼主还是在论坛搜索SetLocal吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |