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

[文本处理] [已解决]批处理如何实现多行合并成一行?

[复制链接]
发表于 2011-3-9 02:35:31 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-11-9 17:48 编辑

a.txt文本内容如下:
===================================
11111111111
22222222222
33333333333
44444444444
55555555555
66666666666
77777777777
88888888888
99999999999
00000000000
.......................................

批处理后想得到的结果文件b.txt
====================================
11111111111;22222222222;33333333333;44444444444;55555555555;
66666666666;77777777777;88888888888;99999999999;00000000000
.............................


(注意:文本中的每行的字符数量不一样,意思就是说有长有短)


找到一个命令只是将全部行变为一行。代码如下,请参考...
  1. @echo off

  2.   :: 把多行文本拼接成用;连接的一行

  3.   :: <NUL 不能省略,省略掉就无法运行下去

  4.   for /f "tokens=*" %%i in (a.txt) do set /p "var=%%i;" >b.txt

  5.   exit
复制代码
[ 本帖最后由 yuanzheng 于 2011-3-9 13:21 编辑 ]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-3-9 09:32:52 | 显示全部楼层
  1. @echo off
  2. for /f  %%a in (a.txt) do set /p=%%a;<nul>>b.txt
复制代码
发表于 2011-3-9 10:18:45 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a num=1
  3. for /f "delims=" %%a in (a.txt) do (
  4.      set /a n+=1,m=n%%5
  5.      set "str=!str!%%a;"
  6.      if !m! equ 0 echo !str!>!num!.txt&set "str="&set /a num+=1
  7. )
  8. if defined str echo %str%>%num%.txt
复制代码
发表于 2011-3-9 11:02:30 | 显示全部楼层

回复 2楼 的帖子

你这是每5行合并成1行么?
发表于 2011-3-9 11:19:06 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "SrcFile=a.txt"
  4. set "DstFile=b.txt"
  5. set "MergeNum=5"
  6. set "Delimiter=;"

  7. type nul>"%DstFile%"
  8. for /f "usebackq tokens=*" %%a in ("%SrcFile%") do (
  9.     set /a RowTotal+=1
  10.     set /a Count+=1
  11.     set "RowMerge=!RowMerge!%Delimiter%%%a"
  12.     if !Count! equ !MergeNum! (
  13.         >>"%DstFile%" echo,!RowMerge:~1!
  14.         set RowMerge=
  15.         set Count=0
  16.     )
  17. )

  18. set /a RowMod=RowTotal%%MergeNum
  19. if !RowMod! equ 0 (
  20.     goto :end
  21. )
  22. >>"%DstFile%" echo,!RowMerge:~1!
  23. :end
复制代码

评分

参与人数 1技术 +1 收起 理由
yuanzheng + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-3-9 13:20:49 | 显示全部楼层
感谢大家。   Commander符合要求 。
发表于 2011-3-9 13:26:07 | 显示全部楼层

回复 6楼 的帖子

请楼主说说三楼哪里不符合要求?
 楼主| 发表于 2011-3-9 13:39:36 | 显示全部楼层

回复 7楼 的帖子

我想要的是输出一个文件。你的是输出多个文件。
发表于 2011-3-9 14:31:40 | 显示全部楼层
原先有点错,改下
  1. @echo off
  2. (for /f  %%a in (a.txt) do (
  3.     set /a n+=1,m=n%%5&set /p=%%a;<nul
  4.     set /a test=1/m||echo;
  5. ))>b,txt
复制代码

[ 本帖最后由 zm900612 于 2011-3-9 15:37 编辑 ]

评分

参与人数 1技术 +1 收起 理由
wc726842270 + 1 思路不错

查看全部评分

发表于 2011-3-9 14:56:50 | 显示全部楼层
不知道怎么样。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (2.txt) do (set /a n+=1
  3. set a=!a!%%i
  4. if !n! equ 5 (echo !a!>>输出文件.txt&&set n=&set a=)
  5. )
  6. pause
复制代码
发表于 2011-3-9 15:43:18 | 显示全部楼层

回复 8楼 的帖子

难道楼主自己就不能动一下手修改一下,就只习惯复制粘贴双击这三个动作?
发表于 2011-3-9 20:08:29 | 显示全部楼层

回复 10楼 的帖子

你找一个6行内容的文件试试?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 12:03 , Processed in 0.022781 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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