Board logo

标题: [已解决]用sort能否实现文件数值按大小排序 [打印本页]

作者: suntb     时间: 2007-5-17 20:12    标题: [已解决]用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 ]
作者: suntb     时间: 2007-5-17 20:48
没有人帮忙,查看论坛中的帖子,好象用sort无法实现

[ Last edited by suntb on 2007-5-18 at 11:11 AM ]
作者: vkill     时间: 2007-5-22 21:02
我也在想这个问题,也没有答案
作者: lxmxn     时间: 2007-5-23 00:59
多搜索一下,记得以前有过类似的讨论的。
作者: youxi01     时间: 2007-5-23 01:19
试试以下代码:
::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)
使用格式:[本文件名] [待处理数字文本文件名]
示例,某名为 “test.txt” 文件中有数字如下:
25
1
9
385
87
195876
在CMD 下测试结果如下:
F:\>paixu.bat test.txt
1
9
25
87
385
195876
不过郁闷的是,在测试时,我将这个P处理文件名改成了sort.bat,然后问题就来了,害我重启了两次,后来终于明白.....
作者: MLQX     时间: 2008-5-3 11:13    标题: 请高手支一声



  Quote:
::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俩字母???????
作者: pkto     时间: 2008-12-27 13:51
呵呵,如何把这个排序结果输入到一个新的文本文件里呢?请教一下呵