Board logo

标题: [文本处理] 批处理合并多个txt如何并自动换行? [打印本页]

作者: 厌世师    时间: 2021-5-1 10:27     标题: 批处理合并多个txt如何并自动换行?

例如:
a.txt内容是:
1
2
3
b.txt内容是:
A
B
C
我合并之后是
1
2
3A
B
C
有没办法在末尾换行,我测试过论坛以前的代码,要么乱码,要么会出现重复,有没大佬解答一下
我测试了这个会重复输出,有没大佬帮我修正一下
@echo off
(for /f "delims=" %%i in ('dir /b *.txt') do (type "%%i"&echo,) 9>>%%a)>result.txt 2>nul
::此处的  9>>%%a 是用句柄冲突产生的错误代替 if 对文件进行逻辑判断,仅在当前文件不为 result.txt 时执行 type,用这个生僻用法的目的是提高运行效率
复制代码
作者: 厌世师    时间: 2021-5-1 10:28

我希望的效果是:
1
2
3
A
B
C
多个文件批量合并到,不是一两个文件,谢谢
作者: 厌世师    时间: 2021-5-1 10:51

[code]@echo off
(for /f "delims=" %%i in ('dir /b *.txt') do (type "%%i"&echo,) 9>>%%a)>result.txt 2>nul
::此处的  9>>%%a 是用句柄冲突产生的错误代替 if 对文件进行逻辑判断,仅在当前文件不为 result.txt 时执行 type,用这个生僻用法的目的是提高运行效率
复制代码
作者: 厌世师    时间: 2021-5-1 10:52

for %%i in (*.txt) do (type "%%i"&echo,)>"%%~ni.temp"
copy *.temp result.txt
del /a /q *.temp
作者: newswan    时间: 2021-5-1 11:14

本帖最后由 newswan 于 2021-5-1 11:16 编辑
  1. for %%a in (*.txt) do (
  2.     more %%a >>all
  3. )
  4. ren all all.txt
复制代码

作者: 厌世师    时间: 2021-5-1 14:38

回复 5# newswan

牛的,谢谢
作者: 厌世师    时间: 2021-5-1 14:56

回复 5# newswan


   兄弟,你之个小文件能用,大一点就直接卡住了呀,我的文件十几个G运行不了,能不能优化一下呀
作者: went    时间: 2021-5-1 15:26

处理大文件,末尾添加换行符,按二进制合并
假定原文件末尾都没有换行符,如果有则会多出一个空行
  1. @echo off & cd /d "%~dp0"
  2. echo.添加换行符
  3. for %%i in (*.txt) do (
  4. echo %%i
  5. echo.>>"%%i"
  6. )
  7. echo -----------------------
  8. echo.合并文件
  9. copy /b *.txt data
  10. echo -----------------------
  11. move /y "data" "data.txt"
  12. pause&exit
复制代码

作者: 厌世师    时间: 2021-5-1 16:46

回复 8# went


   实测可以使用,但没第一个好,第一个换行是紧接上一个文本内容,这个会多换一行,而且同一个文件里面多次测试会叠加换行符,谢谢了凑合用一下
作者: newswan    时间: 2021-5-1 17:33

本帖最后由 newswan 于 2021-5-1 17:53 编辑

回复 7# 厌世师


    more 的性能不高,要么换 powershell 试试?
  1. powershell -c "Get-ChildItem *.txt | foreach-object -process{ Get-Content $_.fullname | out-file -append all }"
复制代码

作者: newswan    时间: 2021-5-1 18:47

或者,修正每个文件,让文件以换行符结束
作者: cutebe    时间: 2021-5-1 19:31

论坛下载三工具gawk.exe
  1. gawk "{print $0}" *.txt>newfile.inf
  2. ren newfile.inf newfile.txt
复制代码

作者: 1152    时间: 2021-5-2 09:54

本帖最后由 1152 于 2021-5-3 11:00 编辑

回复 1# 厌世师
代码1
  1. type a.txt>>b.txt
复制代码
b.txt最后一行要加回车


代码2
  1. copy a.txt+b.txt c.txt
  2. del b.txt
  3. ren c.txt b.txt
复制代码

作者: Batcher    时间: 2021-5-3 11:32

回复 10# newswan


    more命令不是性能不高的问题,而是它无法处理超过6万多行的文件。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2