标题: [文本处理] [已解决]批处理如何实现多行合并成一行? [打印本页]
作者: yuanzheng 时间: 2011-3-9 02:35 标题: [已解决]批处理如何实现多行合并成一行?
本帖最后由 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
.............................
(注意:文本中的每行的字符数量不一样,意思就是说有长有短)
找到一个命令只是将全部行变为一行。代码如下,请参考...- @echo off
-
- :: 把多行文本拼接成用;连接的一行
-
- :: <NUL 不能省略,省略掉就无法运行下去
-
- for /f "tokens=*" %%i in (a.txt) do set /p "var=%%i;" >b.txt
-
- exit
复制代码
[ 本帖最后由 yuanzheng 于 2011-3-9 13:21 编辑 ]
作者: hucuibai 时间: 2011-3-9 09:32
- @echo off
- for /f %%a in (a.txt) do set /p=%%a;<nul>>b.txt
复制代码
作者: batman 时间: 2011-3-9 10:18
- @echo off&setlocal enabledelayedexpansion
- set /a num=1
- for /f "delims=" %%a in (a.txt) do (
- set /a n+=1,m=n%%5
- set "str=!str!%%a;"
- if !m! equ 0 echo !str!>!num!.txt&set "str="&set /a num+=1
- )
- if defined str echo %str%>%num%.txt
复制代码
作者: Batcher 时间: 2011-3-9 11:02 标题: 回复 2楼 的帖子
你这是每5行合并成1行么?
作者: Commander 时间: 2011-3-9 11:19
- @echo off
- setlocal enabledelayedexpansion
- set "SrcFile=a.txt"
- set "DstFile=b.txt"
- set "MergeNum=5"
- set "Delimiter=;"
-
- type nul>"%DstFile%"
- for /f "usebackq tokens=*" %%a in ("%SrcFile%") do (
- set /a RowTotal+=1
- set /a Count+=1
- set "RowMerge=!RowMerge!%Delimiter%%%a"
- if !Count! equ !MergeNum! (
- >>"%DstFile%" echo,!RowMerge:~1!
- set RowMerge=
- set Count=0
- )
- )
-
- set /a RowMod=RowTotal%%MergeNum
- if !RowMod! equ 0 (
- goto :end
- )
- >>"%DstFile%" echo,!RowMerge:~1!
- :end
复制代码
作者: yuanzheng 时间: 2011-3-9 13:20
感谢大家。 Commander符合要求 。
作者: batman 时间: 2011-3-9 13:26 标题: 回复 6楼 的帖子
请楼主说说三楼哪里不符合要求?
作者: yuanzheng 时间: 2011-3-9 13:39 标题: 回复 7楼 的帖子
我想要的是输出一个文件。你的是输出多个文件。
作者: CrLf 时间: 2011-3-9 14:31
原先有点错,改下- @echo off
- (for /f %%a in (a.txt) do (
- set /a n+=1,m=n%%5&set /p=%%a;<nul
- set /a test=1/m||echo;
- ))>b,txt
复制代码
[ 本帖最后由 zm900612 于 2011-3-9 15:37 编辑 ]
作者: wc726842270 时间: 2011-3-9 14:56
不知道怎么样。- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (2.txt) do (set /a n+=1
- set a=!a!%%i
- if !n! equ 5 (echo !a!>>输出文件.txt&&set n=&set a=)
- )
- pause
复制代码
作者: batman 时间: 2011-3-9 15:43 标题: 回复 8楼 的帖子
难道楼主自己就不能动一下手修改一下,就只习惯复制粘贴双击这三个动作?
作者: Batcher 时间: 2011-3-9 20:08 标题: 回复 10楼 的帖子
你找一个6行内容的文件试试?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |