中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何用等号后面值排序问题
作者:
标题: [求助]如何用等号后面值排序问题 上一主题 | 下一主题
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『楼 主』:  [求助]如何用等号后面值排序问题

我有一个文件名为:1.txt 内容如下:
ad=6
dd=1
dc=16
bn=16
dcc=14
c=13
ddd=32
ba=118
re=67
cd=117
sss=30
我想按=号后面的值进行降序排序,排序后的获果如下:
ba=118
cd=117
re=67
ddd=32
sss=30
bn=16
dc=16
dcc=14
c=13
ad=6
dd=1





我用sort排序达不到我想要的获果,,请问用什么排序方法才能达这样的获果.
谢谢.

2009-4-4 15:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 2 楼』:  

@echo off
for /f "tokens=1,2 delims==" %%a in (1.txt) do (set/a n+=1&set cc=00000000%%b&call set #%%cc:~-8%%#%%n%%=%%a=%%b)
for /f "tokens=2,3 delims==" %%a in ('set #') do echo %%a=%%b
pause

[ Last edited by netbenton on 2009-4-4 at 19:09 ]

   此帖被 +7 点积分      点击查看详情   
评分人:【 wjcing 分数: +2  时间:2009-4-5 00:51
评分人:【 s11ss 分数: +5  时间:2009-4-5 05:03




精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-4 20:59
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 3 楼』:  

牛啊..通过加零后,全部取后面8倍..并在后面保存其值..再输出,,,己达到了排序的获果,,,谢谢了..

但还有没有从大到小的排序呢..我想把大的值放在前面...谢谢..

2009-4-5 00:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 4 楼』:  

大家有没有什么好办法. .帮帮忙,,谢谢.

2009-4-5 04:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 5 楼』:  

sort /r降序
借用2L代码:
@echo off
for /f "tokens=1,2 delims==" %%a in (1.txt) do (set/a n+=1&set cc=00000000%%b&call set #%%cc:~-8%%#%%n%%=%%a=%%b)
for /f "tokens=2,3 delims==" %%a in ('set #^|sort /r') do echo %%a=%%b
pause
[ Last edited by s11ss on 2009-4-5 at 04:57 ]

   此帖被 +4 点积分      点击查看详情   
评分人:【 netbenton 分数: +2  时间:2009-4-5 07:27
评分人:【 wjcing 分数: +2  时间:2009-4-5 08:20


2009-4-5 04:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 6 楼』:  

SORT [/R] [/+n] [/M kilobytes] [/L locale] [/REC recordbytes]

  [[drive1:][path1]filename1] [/T [drive2:][path2]]

  [/O [drive3:][path3]filename3]

  /+n                         指定开始每个比较的字符号码 n。/+3 说明每个

                              比较应从每行的第三个字符开始。少于 n 个字符

                              的行排在其他行之前。按默认值,从每行的第一

                              个字符开始比较。

  /L[OCALE] locale            用指定的区域设置替代系统默认区域设置。

                              ""C"" 区域设置产生最快的排序顺序并且是当前的

                              唯一其他选择。排序总是不分大小写的。

  /M[EMORY] kilobytes         指定用于排序的主内存量,单位为 KB。

                              最小内存量总是 160 KB。如果指定内存大小,

                              无论主内存的可用量是多少,指定的内存量

                              会全部用于排序。



                              要取得最佳性能,通常不指定内存大小。按默认

                              值,如果达到默认最大内存值,排序会一次完成

                              (非临时文件);否则,排序会分两次完成(没有

                              完全排序的数据存储在临时文件中);用于排序

                              和合并的内存量相等。如果输入和输出都是

                              文件, 默认最大内存量为可用主内存的 90%;

                              否则,为主内存的 45%。

  /REC[ORD_MAXIMUM] characters 指定记录中的最大字符数量

                               (默认值为 4096,最大值为 65535)。

  /R[EVERSE]                  颠倒排序顺序,即,从 Z 到 A,再从 9 到 0。

  [drive1:][path1]filename1   指定要排序的文件。如果没有指定,

                              则排序标准输入。指定输入文件比将同一个文件

                              重定向为标准输入快。

  /T[EMPORARY]

    [drive2:][path2]          指定保留排序工作存储的目录路径,以防

                              主内存无法容纳数据。默认值是使用系统临时

                              目录。

  /O[UTPUT]

    [drive3:][path3]filename3 指定在哪个文件中储存经过排序的输入。

                              如果没有指定,数据会被写入标准输出。指定

                              输出文件比将标准输出重定向到同一个文件快。




汗...谢谢两位了...没发现还有R这个参数...郁闷中..

2009-4-5 08:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: