a.txt中有行随机产生的数列,如下: 要求通过纯批处理按照数列的大小顺序,正序输出如下: 每行的数值都远远超过了cmd所能计算的最大数值。 要求,正确输出,不生成临时文件,代码高效通用。完成题目,视思路加分。 batman: 先说明下思路: 此题确实是出给我们的一大难题,为什么这要说呢?楼主要求的是文本内所有超大数值的排序, 所有的数值都远远超过了cmd所能运算的最大数值,用常规的比较法都是行不通的这是难点之一; 第二这些数值是随机生成的且字符总数不定,甚至可能达到数行和数十行之长,如采用逐字符判断 的方法来确实行最大字符数,效率将会是此类方案所无法逾越的障碍;第三楼主要求不生成临时文 件,这对用findstr /o来获取行最大字符的方案来讲,无疑是锁上了大门。 综上所述总结如下: 代码要通用就要获取行最大字符数,一种方法是逐字符法,用逐字符法效率上就存在很大问题; 第二种方法是使用findstr /o一次性获取每行字符偏移量,再通过处理获得行最大字符数,效率上比 逐字符法是高多了,但因为单用findstr /o是不能获得文本行未行字符偏移量的,必须要对未行强加 回车,在不破坏原文件的情况下就要用到临时文件。 而我们写代码时一般遵循四条原则:高效率、通用、简洁、尽量不生成临时文件,其中首要的 一条就是高效,其次是通用,至于简洁和有无临时文件都不是主要考虑因素,所以依此主次关系我 给出以下两种方案: 一、通用性差一点(数值字符都在一行内是绝对没问题的),效率高,代码简洁,无临时文件: @echo off&setlocal enabledelayedexpansion for /l %%i in (1,1,) do set "kong=!kong!#" for /f %%i in (1.txt) do ( set "str=%%i%kong%" set "a=!str:~,!" set "a=!a:%%i=!" set "_!a!%%i=a" ) for /f "delims==_" %%i in ('set _') do ( set "str=%%i" echo !str:#=! ) pause>nul 二、通用性极高,效率一般,生成临时文件,代码较复杂: pusofalse:
推荐整理分享批处理数值排序问题(批处理计数),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:批处理 数组,批处理顺序执行命令,批量排序文件名,批处理pause,批处理pause,批量排序,批处理顺序执行命令,批处理顺序执行命令,内容如对您有帮助,希望把文章链接给更多的朋友!
文本最末列数值乘一个数的批处理实现 a.txt1##.0###.#######2#.8###.########.0##.##.#######4##.#.########以#和空格作为分隔符,最后一列的数值乘以7,其他不变。已知
批处理按要求将字符串分段输出的实现代码 一、要求用批处理随机输出个字符到1.txt中的一行,内容类同如下:代码:xhq3ma+remgofmsevhrna4g5r8pl9cjardezqjwj3m8itamh0a4itzd6jz8cmrfmibmhr0wmccyb8qnp2qh4rvlwff6yr2ez4
批处理实现一行内容分行输出 a.txt:代码:aA1一bB2二cC3三dD4四eE5五fF6六gG7七hH8八iI9九输出如下:代码:abcdefghiABCDEFGHI一二三四五六七八九唯一要求,老手略过,留给新手做练习,