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

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

本帖最后由 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 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 10楼 的帖子

你找一个6行内容的文件试试?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8楼 的帖子

难道楼主自己就不能动一下手修改一下,就只习惯复制粘贴双击这三个动作?
***共同提高***

TOP

不知道怎么样。
  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
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

原先有点错,改下
  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

评分人数

TOP

回复 7楼 的帖子

我想要的是输出一个文件。你的是输出多个文件。

TOP

回复 6楼 的帖子

请楼主说说三楼哪里不符合要求?
***共同提高***

TOP

感谢大家。   Commander符合要求 。

TOP

  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

评分人数

TOP

回复 2楼 的帖子

你这是每5行合并成1行么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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
复制代码
***共同提高***

TOP

  1. @echo off
  2. for /f  %%a in (a.txt) do set /p=%%a;<nul>>b.txt
复制代码

TOP

返回列表