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

[文本处理] 批处理合并多个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,用这个生僻用法的目的是提高运行效率
复制代码

回复 10# newswan


    more命令不是性能不高的问题,而是它无法处理超过6万多行的文件。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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
复制代码

TOP

论坛下载三工具gawk.exe
  1. gawk "{print $0}" *.txt>newfile.inf
  2. ren newfile.inf newfile.txt
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

或者,修正每个文件,让文件以换行符结束

TOP

本帖最后由 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 }"
复制代码

TOP

回复 8# went


   实测可以使用,但没第一个好,第一个换行是紧接上一个文本内容,这个会多换一行,而且同一个文件里面多次测试会叠加换行符,谢谢了凑合用一下

TOP

处理大文件,末尾添加换行符,按二进制合并
假定原文件末尾都没有换行符,如果有则会多出一个空行
  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
复制代码

TOP

回复 5# newswan


   兄弟,你之个小文件能用,大一点就直接卡住了呀,我的文件十几个G运行不了,能不能优化一下呀

TOP

回复 5# newswan

牛的,谢谢

TOP

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

TOP

for %%i in (*.txt) do (type "%%i"&echo,)>"%%~ni.temp"
copy *.temp result.txt
del /a /q *.temp

TOP

[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,用这个生僻用法的目的是提高运行效率
复制代码

TOP

我希望的效果是:
1
2
3
A
B
C
多个文件批量合并到,不是一两个文件,谢谢

TOP

返回列表