标题: [文本处理] 【已解决】批处理:文本内的数据按出现次数多少排序 [打印本页]
作者: 思想之翼 时间: 2015-2-15 10:14 标题: 【已解决】批处理:文本内的数据按出现次数多少排序
本帖最后由 思想之翼 于 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/,文本名称与原名称相同。
这样的批处理如何写?
作者: xxpinqz 时间: 2015-2-15 12:11
本帖最后由 xxpinqz 于 2015-2-16 09:38 编辑
- @echo off
- cd /d "d:\数据1\"
- for %%i in (*.txt) do (
- setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (%%i) do (
- for %%b in (1%%a) do set/a x=%%b/100%%10,y=%%b/10%%10,z=%%b%%10
- set/a #!x!+=1,#!y!+=1,#!z!+=1
- )
- for /l %%a in (0,1,9) do (
- set/a t=9-%%a
- if defined #%%a (
- set "str=000000!#%%a!$!t!"
- set "$!str:~-8!=%%a"
- ) else set "off=!off!%%a"
- )
- for /f "tokens=2 delims==" %%a in ('set $^|sort /r') do set "on=!on!%%a"
- echo,!on!!off!
- )>"d:\数据2\%%i"
- endlocal
- )
复制代码
作者: 思想之翼 时间: 2015-2-16 03:28 标题: 显示
本帖最后由 思想之翼 于 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
恳望继续得到您的帮助。
作者: xxpinqz 时间: 2015-2-16 09:38
回复 3# 思想之翼
已改
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |