找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26451|回复: 4

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

[复制链接]
发表于 2018-7-19 23:18:11 | 显示全部楼层 |阅读模式
记事本 a.txt 里含有内容如下:
111
2222
33333
444444
5555555
66666666
777777777
8888888888

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

记事本b.txt  内容如下:

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

这样的批处理文件怎么写,求教
发表于 2018-7-20 09:12:48 | 显示全部楼层
原文件的内容已经按照每行的长度进行排序了吗?
你给的这个例子行数是偶数,如果遇到行数是奇数的文件,中间那一行跟谁合并呢?
 楼主| 发表于 2018-7-20 09:24:53 | 显示全部楼层
本帖最后由 moka_8 于 2018-7-20 09:37 编辑

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

内容一般是杂乱的,但是我可以先排序了再处理
 楼主| 发表于 2018-7-20 09:55:46 | 显示全部楼层
换个思路,记事本有N多行文字,已经按照长短进行了排序,现在需要的就是取第一行和最后一行组合,第二行与倒数第二行进行组合,以此类推.......,如果是奇数行,两两组合完了以后,单独出来的一行就不组合了;原来的两行用问号隔开。

原内容:

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

组合后:

但萨嘎第三个第三个梵蒂?阿萨德飒沓
发表于 2018-7-20 20:57:50 | 显示全部楼层

  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 13:05 , Processed in 0.012673 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表