标题: [文本处理] 记事本中最长的行和最短的行进行组合,批处理怎么做? [打印本页]
作者: moka_8 时间: 2018-7-19 23:18 标题: 记事本中最长的行和最短的行进行组合,批处理怎么做?
记事本 a.txt 里含有内容如下:
111
2222
33333
444444
5555555
66666666
777777777
8888888888
然后a.txt记事本中,最长的行和最短的行组合成一行并输出到记事本 b.txt 里
记事本b.txt 内容如下:
8888888888,111
777777777,2222
66666666,33333
5555555,444444
这样的批处理文件怎么写,求教
作者: Batcher 时间: 2018-7-20 09:12
原文件的内容已经按照每行的长度进行排序了吗?
你给的这个例子行数是偶数,如果遇到行数是奇数的文件,中间那一行跟谁合并呢?
作者: moka_8 时间: 2018-7-20 09:24
本帖最后由 moka_8 于 2018-7-20 09:37 编辑
奇数的话,单独的那一行就不合并,单独出来就行了
内容一般是杂乱的,但是我可以先排序了再处理
作者: moka_8 时间: 2018-7-20 09:55
换个思路,记事本有N多行文字,已经按照长短进行了排序,现在需要的就是取第一行和最后一行组合,第二行与倒数第二行进行组合,以此类推.......,如果是奇数行,两两组合完了以后,单独出来的一行就不组合了;原来的两行用问号隔开。
原内容:
阿萨德飒沓
但萨嘎第三个第三个梵蒂
组合后:
但萨嘎第三个第三个梵蒂?阿萨德飒沓
作者: xxpinqz 时间: 2018-7-20 20:57
- @echo off&setlocal enabledelayedexpansion
- set "src=a.txt"
- set "dst=new_a.txt"
- for /f "tokens=2 delims=:" %%a in ('find /c /v "" "%src%"') do set/a n=%%a/2,m=%%a%%2,num=-1
- sort /+65535 /rec 65535 "%src%">tmp
- (for /f "delims=" %%a in ('type "%src%"') do (
- set "str="
- set /p str=
- set /a num+=1,1/(n-num^)||goto:q
- echo,%%a?!str!
- ))<tmp>"%dst%" 2>nul
- :q
- if %m% equ 1 echo,%str%>>"%dst%"
- del tmp
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |