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

[文本处理] 【已解决】批处理:文本内的数据按出现次数多少排序

本帖最后由 思想之翼 于 2015-2-15 12:53 编辑

D:/数据1/内有若干txt文本,每个文本内数据格式为:
765
371
352
386
827
940
612
欲将文本内的数据(0-9十个数据)按出现次数多少排序,出现次数相同的,则从小到大排列,未出现的数据(0-9十个数据)也是从小到大排列。
上例排序为:2367158049【数据依次出现次数是:3 3 3 3 2 2 2 1 1 1】
排序结果3678124590写入D:/数据2/,文本名称与原名称相同。
这样的批处理如何写?
1

评分人数

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

本帖最后由 xxpinqz 于 2015-2-16 09:38 编辑
  1. @echo off
  2. cd /d "d:\数据1\"
  3. for %%i in (*.txt) do (
  4.     setlocal enabledelayedexpansion
  5.     (for /f "delims=" %%a in (%%i) do (
  6.         for %%b in (1%%a) do set/a x=%%b/100%%10,y=%%b/10%%10,z=%%b%%10
  7.         set/a #!x!+=1,#!y!+=1,#!z!+=1
  8.     )
  9.     for /l %%a in (0,1,9) do (
  10.         set/a t=9-%%a
  11.         if defined #%%a (
  12.             set "str=000000!#%%a!$!t!"
  13.             set "$!str:~-8!=%%a"
  14.         ) else set "off=!off!%%a"
  15.     )
  16.     for /f "tokens=2 delims==" %%a in ('set $^|sort /r') do set "on=!on!%%a"
  17.     echo,!on!!off!
  18.     )>"d:\数据2\%%i"
  19.     endlocal
  20. )
复制代码
1

评分人数

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

TOP

显示

本帖最后由 思想之翼 于 2015-2-16 07:42 编辑

回复 2# xxpinqz
感谢帮助!经过测试,代码可能存在错误。显示:无效数字。数字常数只能是十进制<17>,十六进制<0x11>,或八进制<021>。
比如下列数据:
510
691
865
817
809
076
243
957
514
691
065
017
049
476
832
957
638
713
576
534
581
847
092
164
排序应该是:1567048932【出现次数依次为 9 9 9 9 7 7 7 7 5 3 】
而运用代码排序为:5167840392
恳望继续得到您的帮助。

TOP

回复 3# 思想之翼


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

TOP

返回列表