[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理如何实现多文本统计总个数并排序?

本帖最后由 思想之翼 于 2013-5-19 23:06 编辑

有若干txt文本,每个文本数据格式为:数据+个数,比如下面1个文本数据是:
1 23
9 23
0 22
3 22
4 22
5 22
8 22
6 22
2 21
7 20
其表示数据1有23个,数据9有23个,数据0有22个......
现在欲将若干txt文本中数据汇总,统计各个数据的总个数,并按总个数从多到少进行排序,结果写入新建的txt文本,数据格式为:
7  102
5  99
4  87
...
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 xxpinqz 于 2013-5-18 16:28 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3.   for /f "tokens=1,2 delims= " %%i in (%%a) do (
  4.     set /a #%%i+=%%j
  5.   )
  6. )
  7. for /f "tokens=1,2 delims==#" %%a in ('set #') do (
  8.    set "num=//////////%%b"
  9.    set "$!num:~-10!=%%a"
  10. )
  11. (for /f "tokens=1,2 delims==$/" %%a in ('set $^|sort /+1000') do echo %%b %%a)>ok.txt
  12. start ok.txt
复制代码
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 2# xxpinqz

谢谢帮助,代码运行完美正确。

TOP

回复 2# xxpinqz

您写的代码运用中发现问题:
比如2个txt文本,数据均为
1 23
9 23
0 22
3 22
4 22
5 22
8 22
6 22
2 21
7 20,
统计总个数,应该为
1 46
9 46
0 44
3 44
4 44
5 44
8 44
6 44
2 42
7 40
但是,运用您的代码,却得不到这样的结果。问题出在哪?恳望再次得到您的帮助!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3.   for /f "tokens=1,2 delims= " %%i in (%%a) do (
  4.     set /a #%%i+=%%j
  5.   )
  6. )
  7. for /f "tokens=1,2 delims==#" %%a in ('set #') do (
  8.    set /a r=!random!+10000
  9.    set "num=/////%%b/!r!"
  10.    set "$!num:~-12!=%%a"
  11. )
  12. (for /f "tokens=1,3 delims=$=/" %%a in ('set $^|sort /+1000') do echo %%b %%a)>ok.txt
  13. start ok.txt
复制代码
是值相同时出错了,加个随机数。
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表