[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 记事本中最长的行和最短的行进行组合,批处理怎么做?

记事本 a.txt 里含有内容如下:
111
2222
33333
444444
5555555
66666666
777777777
8888888888

然后a.txt记事本中,最长的行和最短的行组合成一行并输出到记事本 b.txt 里

记事本b.txt  内容如下:

8888888888,111
777777777,2222
66666666,33333
5555555,444444

这样的批处理文件怎么写,求教

原文件的内容已经按照每行的长度进行排序了吗?
你给的这个例子行数是偶数,如果遇到行数是奇数的文件,中间那一行跟谁合并呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 moka_8 于 2018-7-20 09:37 编辑

奇数的话,单独的那一行就不合并,单独出来就行了

内容一般是杂乱的,但是我可以先排序了再处理

TOP

换个思路,记事本有N多行文字,已经按照长短进行了排序,现在需要的就是取第一行和最后一行组合,第二行与倒数第二行进行组合,以此类推.......,如果是奇数行,两两组合完了以后,单独出来的一行就不组合了;原来的两行用问号隔开。

原内容:

阿萨德飒沓
但萨嘎第三个第三个梵蒂

组合后:

但萨嘎第三个第三个梵蒂?阿萨德飒沓

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "src=a.txt"
  3. set "dst=new_a.txt"
  4. for /f "tokens=2 delims=:" %%a in ('find /c /v "" "%src%"') do set/a n=%%a/2,m=%%a%%2,num=-1
  5. sort /+65535 /rec 65535 "%src%">tmp
  6. (for /f "delims=" %%a in ('type "%src%"') do (
  7.     set "str="
  8.     set /p str=
  9.     set /a num+=1,1/(n-num^)||goto:q
  10.     echo,%%a?!str!
  11. ))<tmp>"%dst%" 2>nul
  12. :q
  13. if %m% equ 1 echo,%str%>>"%dst%"
  14. del tmp
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表