对于findstr的表达式一直是晕晕的,对sort的用法也一直是晕晕的,
既然说sort可以对相同位数的数进行排序,且可以处理超大数,
那么用补零的办法似乎也可以,那样就可以不用findstr命令.
namejm 说的效率低,不知是因为用了findstr的原因么?
而且我用你的代码处理一个超大数时,222222222222222222222222222222222 findstr居然报错!!
不知道是我的findstr命令有问题,还是本就如此.
用补零的方法,感觉快些.
::- @echo off&setlocal enabledelayedexpansion
- if not "%1"==":" (
- for /f %%a in ('"%~0" :^|sort') do (
- for /f "tokens=1,2 delims=0" %%b in ("%%a") do (
- set num=%%b
- if "%%b"=="a" (echo 0) else echo !num:~0,-1!
- ))
- pause&exit
- )
- :: 统计数字串的最大长度
- set max=100
- for /f %%i in (a.txt) do (
- set length=100
- call :CheckLength %%i
- if !length! geq !max! set max=!length!
- )
- for /l %%a in (1 1 %max%) do set num=0!num!
- for /f %%i in (a.txt) do (
- set var=!num!%%i
- call echo %%var:~-!max!%%a
- )
- goto :eof
- :CheckLength
- set str=%1
- if "%str:~100,1%"=="" (goto :eof) else set str=!str:~100!
- :loop
- set /a length+=1
- set str=!str:~1!
- if defined str goto loop
- goto :eof
复制代码
[ 本帖最后由 随风 于 2007-11-9 20:11 编辑 ] |