标题: 【练习-036】批处理将数值按要求排序 [打印本页]
作者: batman 时间: 2009-2-25 20:25 标题: 【练习-036】批处理将数值按要求排序
出题目的:
1、通过练习掌握数值排序的几种方法
2、通过练习掌握切分字符串的方法
加分原则:
满分15分,视情形加分(以思路为重)
解题限制:
版主级的暂请观看,但可做解题提示
题目如下:
有a.txt(见一)内容为N列N行不等的4位内数值,通过批处理将所有数值从小到大进行排序,并按6个数值一行输出到b.txt(见二)。
一
- 4981 5487 2724 2419 4837 2218 37 19 2880 5521
- 9613 7292 7433 554 8287 1147 9516 5678 9760 3028
- 9220 5936 3580 6455 8116 9776 6246 1652 6390 6615
- 7855 7707 1850 4564 2454 4571 7330 8718 4499 5083
- 7683 3076 637 3644 9714 6080 9554 8250 5353 6692
- 4036 9590 4539 8156 7648 6738 8834 7033 4043 9729
- 7512 1299 1611 1054 9291 9948 7213 5882 6891 6149
- 1159 7604 1290 7426 8342 4907 7802 2285 6828 4547
- 940 4594 5470 3831 7949 3308 8553 5841 4532 6151
- 2048 4362 7137 6227 1843 2833 119 6124 6716 4435
- 6342 132 4637 4359 7482 632 8 35 9999 1023
复制代码
二
- 8 19 35 37 119 132
- 554 632 637 940 1023 1054
- 1147 1159 1290 1299 1611 1652
- 1843 1850 2048 2218 2285 2419
- 2454 2724 2833 2880 3028 3076
- 3308 3580 3644 3831 4036 4043
- 4359 4362 4435 4499 4532 4539
- 4547 4564 4571 4594 4637 4837
- 4907 4981 5083 5353 5470 5487
- 5521 5678 5841 5882 5936 6080
- 6124 6149 6151 6227 6246 6342
- 6390 6455 6615 6692 6716 6738
- 6828 6891 7033 7137 7213 7292
- 7330 7426 7433 7482 7512 7604
- 7648 7683 7707 7802 7855 7949
- 8116 8156 8250 8287 8342 8553
- 8718 8834 9220 9291 9516 9554
- 9590 9613 9714 9729 9760 9776
- 9948 9999
复制代码
[ 本帖最后由 batman 于 2009-2-25 20:31 编辑 ]
作者: BBCC 时间: 2009-2-25 21:37
嗯..数据.数量很大的时候用什么方法好呢?二分法应该是比较快的了,但是不知道速度能不能跟上...
作者: zhouyongjun 时间: 2009-2-25 22:21
周哥,我目前只想到这个简单且效率不高的方法。- @echo off
- for /f "tokens=1-10" %%a in (a.txt) do (
- set/a _%%a=0,_%%b=0,_%%c=0,_%%d=0,_%%e=0,_%%f=0,_%%g=0,_%%h=0,_%%i=0,_%%j=0
- )
- for /l %%i in (1,1,9999) do (
- if defined _%%i call :output %%i
- )
- exit
- :output
- <nul set/p=%1 >>b.txt
- set/a n+=1
- if %n% equ 6 echo.>>b.txt&set/a n=0
- goto :eof
复制代码
作者: batman 时间: 2009-2-25 23:03
请注意a.txt是n列n行,就是不知道有几行几列,所以楼上的tokens=1-10不可取,同时这种代码的效率是很相当低的。
作者: batman 时间: 2009-2-25 23:54
原帖由 BBCC 于 2009-2-25 21:37 发表
嗯..数据.数量很大的时候用什么方法好呢?二分法应该是比较快的了,但是不知道速度能不能跟上...
兄弟把你的方法写出来看看吧
作者: batman 时间: 2009-2-26 10:07
我想知道三个答案:
一、是不是我每次出的题都难了点,让大家习惯性的望而生畏了?
二、是不是大家都不想通过解题这种快捷方式来得到提高了?
三、难道论坛除了版主、技术组、新手(新手在做新手题)就没有其他的会员了?
作者: shqf 时间: 2009-2-26 12:52
- @echo off&setlocal enabledelayedexpansion
- >b.txt cd.
- for /f "usebackq delims=" %%i in (`more a.txt`) do (set "numbers_old=!numbers_old! %%i")
- for %%i in (%numbers_old%) do (
- set number=0000%%i
- set number=!number:~-4!
- set _!number!=%%i
- )
- for /f "tokens=2 delims==" %%i in ('set _') do (
- for %%j in (%%i) do set "numbers_new=!numbers_new! %%j"
- )
- for %%i in (%numbers_new%) do (
- set /p=%%i <nul >>b.txt
- set /a n+=1
- if !n! equ 6 echo.>>b.txt&set /a n=0
- )
- start b.txt
- exit
复制代码
说明一下:为此题学习了随风的排序函数,也终于搞懂了这个函数。学习了他的思路,不要分数,凑个热闹、搞点人气而已。
[ 本帖最后由 shqf 于 2009-2-26 12:57 编辑 ]
作者: BBCC 时间: 2009-2-26 12:56
原帖由 batman 于 2009-2-26 10:07 发表 [img][/img]
我想知道三个答案:
一、是不是我每次出的题都难了点,让大家习惯性的望而生畏了?
二、是不是大家都不想通过解题这种快捷方式来得到提高了?
三、难道论坛除了版主、技术组、新手(新手在做新手题)就没有其他的 ...
人家要上学嘛...看这个周末有时间不...
不过也是要号召更多人来做这种题啊...
作者: namejm 时间: 2009-2-26 13:24
如果原始数据中没有重复的数值,并且数值的位数是已知的,那么,可以考虑用 for /l 生成从1~N的递增序列,每生成一个数值,就用 findstr 在原始表中查询数据,我觉得这应该是最简洁最高效的办法。
当然,如何用 findstr 来精确匹配每一列数值,还得想办法对原始数据做一番处理。至于需要如何处理,各位开动脑筋想一想吧^_^。
作者: batman 时间: 2009-2-26 15:30
我不赞同jm的意见,首先我声明了原始数据中数值是不等的(这在题目中可以看到),其次
采用for /l (1,1,n)+findstr的方法效率不是最高的,举个例子假如原始数据中只有
1,1000,1000000000这三个数据,那岂不是for要空循环1000000000-3次,我觉得设置变量
法是最快的,以上面的例子只要设置三个变量就行了,至于具体怎么处理,大家思考了。
作者: namejm 时间: 2009-2-26 16:27
我认为,对于排序的问题,并没有一个谁快谁慢的绝对方案,要具体问题具体分析。
如果数据十分少,且范围十分大,用 for /l + findstr 的方法无疑是很浪费的做法。
如果是大量的数据,并且数据范围很窄,那么, for /l + findstr 应该是比较有优势的,因为用 for /l 罗列数字序列的速度非常快,可以免去数值大小的比较这一步,比较耗时的操作都是花费在频繁地调用findstr来打开文本文件上面,这使得 for /l + findstr 方案的效率骤然降低;在这种情况下,我觉得如果换用其他的方案,还需要先正确提取每一个数值,然后遍历表中的数据,对取到的每一个数值在表中做一番比较,处理次数将呈几何级增长,即使通过优化算法,数值比较的次数仍然十分可观,比较保守的估计,比较次数应该不低于1+2+3+……+N 次(N为数字个数),再加上批处理中没有数组的设计,保存那些临时数据也是件麻烦的事情,综合起来考虑,我并不觉得其他的方法比 for /l + findstr 好到哪里去。当然,限于本人的学识,对排序算法粗通皮毛,不知道是否有更高效的算法存在。
声明:以上言论未经实测验证,仅为本人的推理,正确与否,以实际测试结果为准。
作者: shqf 时间: 2009-2-26 16:33
- @echo off
- setlocal EnableDelayedExpansion
- >1.txt cd.&>b.txt cd.
- for /f "usebackq delims=" %%i in (`more a.txt`) do (
- for %%j in (%%i)do (
- set "number= %%j"
- echo !number:~-4!>>1.txt
- )
- )
- for /f "usebackq" %%i in (`sort 1.txt`) do (
- set /p=%%i <nul >>b.txt
- set /a n+=1
- if !n! equ 6 echo.>>b.txt&set /a n=0
- )
- start b.txt
- del 1.txt
- exit
复制代码
哈,我再来一个。这样的题蛮有意思。
作者: zqz0012005 时间: 2009-2-26 16:36 标题: 回复 7楼 的帖子
用不着临时文件。
在for的in里面用('set _^|sor')t就可以排序。
话说我第一反应就是把数字作为变量名的一部分来存储。
作者: terse 时间: 2009-2-26 16:42
我的思路 SET 后 FOR
作者: namejm 时间: 2009-2-26 16:46
如果是 set 后再 for ,对付少量的数据确实是个很高效的算法;若楼主的意图是处理海量数据,那么,大量的变量将会撑满内存,好像场面壮观了点^_^。
作者: namejm 时间: 2009-2-26 17:10
做这个题目的时候,又想起了以前在其他论坛曾经帮别人解答过类似的题目,有位网友给出了一段十分经典的代码,用的是 for /l + findstr正则+sort 方案,只需要设置两个变量即可搞定,处理海量数据的速度只能用震惊来形容,处理顶楼的数据,排序部分花了不到两秒钟(机器配置:主频1.6G、内存512M、操作系统XP_SP3)。呵呵,先卖个关子,请大家继续。
用顶楼的数据来测试我那个 for /l + findstr 的猜想,等了快10分钟都还没得到最终结果,看来cmd.exe对频繁调用某些命令可能有一些抑制机制,以防非正常的调用导致系统崩溃——当然,这只是我的一个猜想,各位可以当做是我在为自己可耻的失败寻找冠冕堂皇的理由^_^。
作者: terse 时间: 2009-2-26 17:36
12楼的临时文件可省略
后面sort也可弃去 直接SET ..等同了
JM版的FINDSTR 总觉得是整行获取 那不是后面还要很多工作
[ 本帖最后由 terse 于 2009-2-26 17:38 编辑 ]
作者: zqz0012005 时间: 2009-2-26 17:41
set再for- @echo off
- setlocal EnableDelayedExpansion
- cd.>b.txt
- for /f "delims=" %%a in ('type a.txt') do for %%i in (%%a) do set number=____%%i&set !number:~-5!=1
- for /f "delims=_=" %%i in ('set _^|sort') do (
- set var=!var! %%i
- set /a n+=1
- set /a "i=1/(n/6)" 2>nul && (>>b.txt echo !var!&set var=&set n=)
- )
- (echo !var!)>>b.txt%不足6个数的部分%
- start b.txt
复制代码
作者: zqz0012005 时间: 2009-2-26 17:45
for /l + findstr (有临时文件)- @echo off
- setlocal EnableDelayedExpansion
- cd.>b.txt
- (for /f "delims=" %%a in ('type a.txt') do for %%i in (%%a) do echo %%i)>~a.txt
- (for /l %%a in (1 1 9999) do echo %%a)>~t.txt
- for /f %%a in ('findstr /rxg:~a.txt t.txt') do (
- set var=!var! %%a
- set /a n+=1
- if !n!==6 (>>b.txt echo !var!&set var=&set n=)
- )
- (echo !var!)>>b.txt%不足6个数的部分%
- del ~a.txt ~t.txt
- start b.txt
复制代码
作者: namejm 时间: 2009-2-26 18:06
for /l+findstr+sort 方案需要生成临时文件,临时文件是一行一条数据,然后想办法sort,需要用findstr的正则来控制要提取的数字的位数,如何控制参与sort的数字的位数是这个方案的关键,暂时就提示那么多,看看有没有人能写出成形的代码。
呵呵,貌似这个题目弄成挑战赛了。
作者: terse 时间: 2009-2-26 18:58
用临时文件的话 我直接TYPE
FINDSTR 控制位数的话 好象用.的话的通配了 再想想- @echo off&setlocal enabledelayedexpansion
- (for /f "usebackq tokens=*" %%i in ("n.txt") do (
- for %%j in (%%i) do (
- set "str= %%j"
- echo !str:~-4!
- )))>tem
- for /f "tokens=*" %%i in ('sort tem') do (
- set/a n+=1,n%%=6
- if !n! equ 0 (echo !var:~1! %%i&set "var=")else set var=!var! %%i
- )
- if not "!var!"=="" echo !var:~1!
- pause
复制代码
[ 本帖最后由 terse 于 2009-2-26 21:04 编辑 ]
作者: 随风 时间: 2009-2-26 19:17
海量数据用临时文件加findstr
少量数据用变量
我只能想到这样了。。
[ 本帖最后由 随风 于 2009-2-26 19:26 编辑 ]
作者: terse 时间: 2009-2-26 19:25
我最多就这思路了 貌似比上面麻烦 继续看看- @echo off&setlocal enabledelayedexpansion
- (for /f "usebackq tokens=*" %%i in ("n.txt") do (
- for %%j in (%%i) do echo %%j
- ))>tem
- for /l %%i in (1 1 4) do (
- if "!t!"=="" (set t=[0-9])else set t=[0-9]!t!
- for /f %%i in ('findstr "\<!t!\>" tem^|sort') do (
- set/a n+=1,n%%=6
- if !n! equ 0 (echo !var:~1! %%i&set "var=")else set var=!var! %%i
- )
- )
- if not "!var!"=="" echo !var:~1!
- pause
复制代码
作者: wxcute 时间: 2009-2-26 19:56
set 变量法补 0 时也可以用其他符号如 +、# 或 $ 等。
总的想法与楼主一样,也是先 SET 变量(用来排序)再 FOR(用来输出)。
作者: namejm 时间: 2009-2-26 20:15
terse在17楼的代码思路也非常不错,如果第二条for语句不使用type语句而直接sort的话,效率还可以稍有提升。
23楼的思路正是我提到的 for /l+findstr+sort 方案,与17楼的方案比起来,在速度上差远了。
就目前情况而言,17楼的方案应该是最通用、也是效率最高的了。
作者: 随风 时间: 2009-2-26 20:31 标题: 回复 21楼 的帖子
'type tem^|sort' 为何不写成 sort tem
作者: terse 时间: 2009-2-26 21:03
原帖由 随风 于 2009-2-26 20:31 发表
'type tem^|sort' 为何不写成 sort tem
这就改 谢
作者: 随风 时间: 2009-2-26 21:20
忍不住,也发两个凑凑热闹。
代码一、
不生成临时文件,适合处理少量数据。可以处理重复数字。- @echo off
- if "%~1"=="" (
- setlocal enabledelayedexpansion&set /a n=0
- for /f "tokens=* delims=0" %%a in ('%~s0 h^|sort') do (
- set /a n+=1,n=n%%6
- set /p=%%a <nul
- if !n! equ 0 echo.
- )
- pause&exit
- )
- setlocal enabledelayedexpansion
- for /f "usebackq tokens=*" %%i in ("a.txt") do (
- for %%j in (%%i) do set m=0000000000%%j&echo !m:~-10!
- )
- endlocal
- goto :EOF
复制代码
代码二、
需确定最高位是多少。
生成一个临时文件也可以,不过既然已经生成了临时文件,不防再多生成一个以提高效率。
因为 for /f + findstr 效率很低。
适合处理海量数据。- @echo off&setlocal enabledelayedexpansion
- (for /f "usebackq tokens=*" %%i in ("a.txt") do (
- for %%j in (%%i) do echo %%j
- ))>tem
- sort tem>tem2
- cd.>tem
- for /l %%a in (1 1 4) do (
- set num=.!num!
- findstr /x !num! tem2>>tem
- )
- for /f "delims=" %%a in (tem) do (
- set /a n+=1,n=n%%6
- set /p=%%a <nul
- if !n! equ 0 echo.
- )
- echo.&pause
复制代码
作者: Batcher 时间: 2009-2-26 23:17 标题: 为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!
- )
复制代码
作者: Batcher 时间: 2009-2-26 23:24 标题: 为21楼加点注释以便初学者阅读
- @echo off
- setlocal enabledelayedexpansion
- ::把原始数据转换成每行只有一个数字的形式
- (for /f "usebackq tokens=*" %%i in ("a.txt") do (
- for %%j in (%%i) do (
- ::在每个数字的最左侧补上三个空格
- set "str= %%j"
- ::截取补空格以后的字符串的最右侧四位
- ::最终的结果就是把所有数字全部补成四个字符(不足四位的在左侧补空格)
- ::这样的做的原因是sort排序时是按照字符ASCII逐位比较的
- echo !str:~-4!
- )
- ))>"%temp%\GridNum.txt"
- ::利用tokens=*忽略行首空格的特性来删除前面补的空格
- for /f "tokens=*" %%i in ('sort "%temp%\GridNum.txt"') 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!
- )
复制代码
作者: zqz0012005 时间: 2009-2-27 08:37 标题: 回复 28楼 的帖子
因为 for /f + findstr 效率很低。
你说的是把findstr嵌在in里面吗?理论上效率应该不会很低吧。
应该与先将findstr的结果保存到文件,再for /f 解析文件差不多。findstr的效率不低。要实现六列一行,用for /f是必不可少的。
====================================
是在 for /f 的 in 中命令的运行方式(cmd /c command)影响效率吗?
因为要额外启动一个CMD,所以速度要慢一点。但应该不影响解析效率吧。
照这样说,所有用 for /f 解析命令输出的方法都对速度有一定影响,也就是增加了总的运行时间,折算起来就相当于降低了效率。
PS:19楼代码中 findstr /rxg:~a.txt t.txt,t.txt前面写掉了~。
[ 本帖最后由 zqz0012005 于 2009-2-27 08:49 编辑 ]
作者: batman 时间: 2009-2-27 13:19
&&没想到这个贴子引发了众位管理员对处理数据的一番激烈议论,各位也给出了精彩的代
码,看得我目不暇接眼花缭乱,确实是学习了。
对于数据的处理,本人还是偏爱于设置变量法,jm说这种方法会消耗系统内存,确实是
如此,经本人亲自实验,按现在的一般机器配置,设置1000000个变量(仅实验到百万)对
系统的运行不会造成明显的影响。因此,设置变量法还是合适处理海量的数据的。
下面给出本人的解:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- for %%b in (%%a) do set "a=####%%b"&set "_!a:~-4!=a"
- )
- for /f "tokens=1 delims=#_=" %%a in ('set _') do (
- set /a n+=1,m=n%%6
- set /p=%%a <nul>>b.txt
- if !m! equ 0 echo.>>b.txt
- )
- start b.txt
复制代码
作者: 随风 时间: 2009-3-2 19:01 标题: 回复 31楼 的帖子
for /f + findstr 效率很低。
应该与先将findstr的结果保存到文件,再for /f 解析文件差不多。
理论上好像是这样的,但事实不是。
findstr 无论是遍历、还是写入文件,速度都是超快的,但如果把findstr运行的结果
直接赋值给for就没有充分利用findstr命令的优势了。
事实上 for 的in 中嵌套任何命令都是影响效率的,
比如我们常用的
for /f "delims=" %%a in ('dir/b') do ......
for /f "delims=" %%a in ('set .') do ......
等等,只是在少量的数据、或少量的使用次数面前体现不出来。
废话少说,测试以下代码,应该会有所发现。
a.txt 内容至少 5万行
代码一、- for /f "delims=" %%a in ('findstr .* a.txt') do echo %%a
复制代码
代码二、- findstr .* a.txt>b.txt
- for /f "delims=" %%a in (b.txt) do echo %%a
复制代码
回复 32 楼 楼主
设置变量的方法确实好,不过有一个缺点是无法处理重复的数字
在实际应用中,对大量的数字排序,不重复的数字应该不多吧。。^_^
作者: zhouyongjun 时间: 2009-3-3 12:02
回楼上随风兄,我试了这样修改下能处理重复,不知通用么。
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('more a.txt') do (
- for %%j in (%%i) do (
- set "num=0000%%j"&set "num=!num:~-4!"
- if defined _!num! (set/a m+=1&set _!num!!m!=%%j
- ) else set _!num!=%%j
- ))
- for /f "tokens=2 delims==" %%i in ('set _') do (
- <nul set/p=%%i >>b.txt
- set/a n+=1
- if !n! equ 6 echo.>>b.txt&set/a n=0
- )
- start "" "b.txt"
复制代码
[ 本帖最后由 zhouyongjun 于 2009-3-3 12:11 编辑 ]
作者: netbenton 时间: 2009-5-1 19:46 标题: 我也练练手
@echo off&setlocal enabledelayedexpansion
(set m=
for /f "delims=" %%a in (a.txt) do (
for %%b in (%%a) do (
set "one=0000%%j"&set/a m+=1&set _!num:~-4!_!m!=%%j
) )
set n=6&set str=
for /f "tokens=2 delims==" %%i in ('set _') do (
set str=!str! !%%i
set/a n-=1,1/n||(set n=6&echo !str!&set str=)
)
if defined str echo !str!)>b.txt
start "b.txt"
作者: everest79 时间: 2009-5-2 03:04
使用debug- @echo off
- Setlocal EnableDelayedExpansion
- Set fs=1.txt
- Set dt=2.txt
- Set tf=db-tmp.txt
- Set lenb=1
- Set "o=>>%tf%"
-
- call :sizehex %fs%
- call :consoledb %fs%
-
- ::scan file1
- %o% echo s 100 %size% 20
- %o% echo q
- start /w debug ^<%tf% ^>db-out.txt
-
- ::edit file1
- call :consoledb %fs%
- for /f "eol=- tokens=2 delims=:" %%a in (db-out.txt) do (
- if defined old (
- set /a len=0x%%a-old-1
- set /a old=0x%%a
- if !len! GTR !lenb! Set /a lenb=len
- ) else (
- set /a old=0x%%a
- )
- %o% echo e %%a
- %o% echo 0A
- )
- %o% echo w
- %o% echo q
- start /w debug ^<%tf%
-
- ::output
- call :fined >%dt%
-
-
- call :sizehex %dt%
- call :consoledb %dt%
-
- ::scan file2
- %o% echo s 100 %size% 0D
- %o% echo q
- start /w debug ^<%tf% ^>db-out.txt
-
- ::edit file2
- call :consoledb %dt%
- for /f "eol=- tokens=2 delims=:" %%a in (db-out.txt) do (
- set /a count+=1,line=count%%6
- if !line! NEQ 0 (
- %o% echo e %%a
- %o% echo 20 20
- )
- )
- %o% echo w
- %o% echo q
- start /w debug ^<%tf%
-
-
-
-
- pause
- del db-???.txt
- goto :eof
-
- :fined
- set reg=%reg%[0-9]
- if %lenb% EQU 0 goto :eof
- set /a lenb-=1
- more %fs%|findstr /b /e %reg%|sort
- call :fined
- goto :eof
-
- :consoledb
- >%tf% cd.
- %o% echo n%1
- %o% echo l
- goto :eof
-
- :sizehex
- set /a size=%~z1/16*10
- goto :eof
复制代码
作者: netbenton 时间: 2009-5-2 07:31
要是用debug的话,就就应用汇编批令完成了,搞那么多次debug调用,效率太低了一点
作者: everest79 时间: 2009-5-2 07:53
原帖由 netbenton 于 2009-5-2 07:31 发表
要是用debug的话,就就应用汇编批令完成了,搞那么多次debug调用,效率太低了一点
那个我不懂嘿嘿
作者: keen 时间: 2009-6-5 16:39
来个效率低下的:
- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (1 1 10000) do (
- for /f "delims=" %%b in (a.txt) do (
- for %%c in (%%b) do (
- if %%a equ %%c set /p= %%a<nul&set /a n+=1&if !n! equ 6 echo\&set n=0
- )))
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |