标题: 排序问题
[打印本页]
作者: tanytxxx
时间: 2010-3-6 21:15
标题: 排序问题
第352集$31762956
第351集$31409628
第349-350集$31038027
第348集$30275965
第347集$30275004
怎样改成以下的顺序:
第347集$30275004
第348集$30275965
第349-350集$31038027
第351集$31409628
第352集$31762956
作者: tachyon
时间: 2010-3-6 23:39
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 ]
作者: Hanyeguxing
时间: 2010-3-6 23:50
@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
作者: tachyon
时间: 2010-3-7 00:10
楼上,
环境变量能放多少? 一定是按升序排列的吗?
作者: HAT
时间: 2010-3-7 00:35
GNU 的 sort.exe
sort -t$ +2n a.txt
作者: 000000000000000
时间: 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
作者: tanytxxx
时间: 2010-3-7 10:33
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
不太懂批处理,
只要能把最后一行排在第一行,最后第二行排在第二行
...
第一行排在最后一行就可以了