|
|
发表于 2009-2-26 23:17:47
|
显示全部楼层
为23楼加点注释以便初学者阅读
- @echo off
- setlocal enabledelayedexpansion
- ::把原始数据转换成每行只有一个数字的形式
- (for /f "usebackq tokens=*" %%i in ("a.txt") do (
- for %%j in (%%i) do (
- echo %%j
- )
- ))>tem
- ::分别对一位、二位、三位、四位数字进行sort排序
- ::这样的做的原因是sort排序时是按照字符ASCII逐位比较的
- for /l %%i in (1 1 4) do (
- if "!t!"=="" (
- ::定义这样的变量是为了在后面的findstr正则表达式中匹配任意一位0到9之间的数字
- set t=[0-9]
- ) else (
- ::在后面的findstr正则表达式中分别匹配二位、三位、四位数字
- set t=[0-9]!t!
- )
- ::控制参与sort排序的数字位数
- ::在findstr正则表达式中<string>表示精确匹配
- ::结合外层for循环实现分别对一位、二位、三位、四位数字进行sort排序
- for /f %%i in ('findstr "\<!t!\>" tem^|sort') do (
- set /a n+=1
- ::对6取余是实现六列一行的关键
- set /a n%%=6
- if !n! equ 0 (
- echo !var:~1! %%i
- set "var="
- ) else (
- set var=!var! %%i
- )
- )
- )
- if not "!var!"=="" (
- echo !var:~1!
- )
复制代码 |
|