中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 14:08
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]用sort能否实现文件数值按大小排序
可打印版本  2,100 / 6
第1楼 suntb 发表于 2007-05-17 20:12
高级用户 发帖 277 积分 581
[已解决]用sort能否实现文件数值按大小排序
RT
假设文件test.txt中为纯数字的数据,有如下数字
25
1
9
385
87
195876
如果用sort test.txt命令排序只能得到如下结果
1
195876
25
385
87
9
也就是说sort进行排序时是先按首位字符排序,那么如果按照平时习惯是按数值大小排序应该如何处理,也就是结果应该如下
1
9
25
87
385
195876


[ Last edited by suntb on 2007-5-18 at 10:05 AM ]
第2楼 suntb 发表于 2007-05-17 20:48
高级用户 发帖 277 积分 581
没有人帮忙,查看论坛中的帖子,好象用sort无法实现

[ Last edited by suntb on 2007-5-18 at 11:11 AM ]
第3楼 vkill 发表于 2007-05-22 21:02
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
我也在想这个问题,也没有答案
第4楼 lxmxn 发表于 2007-05-23 00:59
版主 发帖 4,938 积分 11,386
多搜索一下,记得以前有过类似的讨论的。
第5楼 youxi01 发表于 2007-05-23 01:19
高级用户 发帖 247 积分 846 来自 湖南==》广东
试试以下代码:

使用格式:
示例,某名为 “test.txt” 文件中有数字如下:

在CMD 下测试结果如下:


不过郁闷的是,在测试时,我将这个P处理文件名改成了sort.bat,然后问题就来了,害我重启了两次,后来终于明白.....
第6楼 MLQX 发表于 2008-05-03 11:13
初级用户 发帖 15 积分 28
请高手支一声
::code by youxi01@cn-dos.net
::使用格式:命令行中,输入:
::
@echo off
setlocal enabledelayedexpansion

if "%2"=="" (
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
) else (
for /f %%i in (%1) do (
call :CheckNum %%i Res
echo !Res!#%%i)
goto :eof)

pause>nul

:CheckNum num Res
set/a Res=0
for /l %%i in (0 1 1000) do (
set "var=%~1"
set tmp=!var:~%%i,1!
if "!tmp!"=="" goto :eof
set/a Res+=1


请问:
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
)
其中为什么要加OK俩字母???????
第7楼 pkto 发表于 2008-12-27 13:51
初级用户 发帖 62 积分 62
呵呵,如何把这个排序结果输入到一个新的文本文件里呢?请教一下呵
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023