中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 排序问题 上一主题 | 下一主题
tanytxxx
新手上路





积分 16
发帖 14
注册 2006-6-23
状态 离线
『楼 主』:  排序问题

第352集$31762956
第351集$31409628
第349-350集$31038027
第348集$30275965
第347集$30275004

怎样改成以下的顺序:

第347集$30275004
第348集$30275965
第349-350集$31038027
第351集$31409628
第352集$31762956

2010-3-6 21:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tachyon
初级用户





积分 33
发帖 32
注册 2006-2-21
状态 离线
『第 2 楼』:  

let
ffile=
tfile={
第352集$31762956
第351集$31409628
第349-350集$31038027
第348集$30275965
第347集$30275004
}
ss.cmd
::start
     @echo off
     for /f "delims=第集" %%i in ('type tfile.txt 2^>nul') do echo %%i >> n.txt
     for /f %%j in ('sort n.txt') do type tfile.txt | find /i "%%j" >> ffile.txt
::end

不是很严谨,有可能出现排序错误的情况,请酌情调整。
用系统build-in sort,功能不是很好,有兴趣可以用cmd实现一个排序脚本,
但效率不会太高,而且局限性很大。

[ Last edited by tachyon on 2010-3-7 at 00:00 ]

2010-3-6 23:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.txt) do set i=%%i&set "han_!i:~1,3!=!i!"
for /f "tokens=1,2 delims==" %%i in ('set ^| findstr /b /i "han_"') do echo %%j
pause




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-3-6 23:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tachyon
初级用户





积分 33
发帖 32
注册 2006-2-21
状态 离线
『第 4 楼』:  

楼上,
环境变量能放多少? 一定是按升序排列的吗?

2010-3-7 00:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

GNU 的 sort.exe
sort -t$ +2n a.txt




2010-3-7 00:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
000000000000000
初级用户





积分 49
发帖 42
注册 2009-11-26
状态 离线
『第 6 楼』:  


@echo off
for /f %%a in (a.txt) do set \%%a=d
for /f "delims==" %%a in ('set \') do echo %%~nxa
pause


2010-3-7 00:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanytxxx
新手上路





积分 16
发帖 14
注册 2006-6-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by 000000000000000 at 2010-3-7 00:41:
@echo off
for /f %%a in (a.txt) do set \%%a=d
for /f "delims==" %%a in ('set \') do echo %%~nxa
pause

谢谢六楼

不过如果是下面的排序就会错:
第200集$2526154
...
第2集$2533922
第1集$2529441
就会变成
第119集$451570
第11集$2529441
第120集$451617
第121集$451657

不太懂批处理,
只要能把最后一行排在第一行,最后第二行排在第二行
...
第一行排在最后一行就可以了

2010-3-7 10:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: