标题: [文本处理] [已解决]批处理怎么把多个TXT文件(字符比较长,10k-15k),合并到一个文本里 [打印本页]
作者: 13545876873 时间: 2024-10-21 16:56 标题: [已解决]批处理怎么把多个TXT文件(字符比较长,10k-15k),合并到一个文本里
本帖最后由 13545876873 于 2024-10-22 10:21 编辑
我有很多TXT文件,需要把他们合并在一起,但发现字符小的文件(1k-3k)可以合并在一起,如下图:
但字符数较大的文件(字符比较长,10k-15k),没能合并成功,文件已上传到网盘:https://wwfe.lanzoue.com/iWJv12d1o9je
密码:4wc8
我最后想得到的合并文件内容是:第一行是原TAT文本的名称,第二行是它的内容。按这种方式进行合并。
求大哥们帮忙解决:
作者: aloha20200628 时间: 2024-10-21 18:06
本帖最后由 aloha20200628 于 2024-10-21 18:08 编辑
回复 1# 13545876873 - type *.txt>"按文件名字符升序合并.txt"
复制代码
作者: Kacastic 时间: 2024-10-22 00:15
复制代码
作者: qixiaobin0715 时间: 2024-10-22 08:56
本帖最后由 qixiaobin0715 于 2024-10-22 09:57 编辑
上面方案欠妥,会把合并后的文件再合并一次:- type *.txt>temp
- ren temp out.txt
复制代码
开始未看 源文件,好像这样也不行,文件中只有一行,且没有换行,还得想别的办法。
这样应当可行- @echo off
- (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- echo,%%~ni
- type "%%i"
- echo,
- ))>temp
- ren temp out.txt
- pause
复制代码
作者: 13545876873 时间: 2024-10-22 09:47
回复 2# aloha20200628
大哥,是我没把问题表述清楚
我最后想得到的合并文件内容是:第一行是原TAT文本的名称,第二行是它的内容。按这种方式进行合并。
麻烦大哥再帮忙一下呢
作者: 13545876873 时间: 2024-10-22 09:50
回复 4# qixiaobin0715
大哥,是我没把问题表述清楚
我需要把文档的名称,也导入合并文档里
作者: qixiaobin0715 时间: 2024-10-22 09:58
回复 6# 13545876873
已修改
作者: hfxiang 时间: 2024-10-22 10:07
本帖最后由 hfxiang 于 2024-10-22 10:10 编辑
回复 1# 13545876873
在命令行窗口下,用第3方工具gawk(http://bcn.bathome.net/tool/4.1.0/gawk.exe)的实现方式如下:- gawk "FILENAME==\"out.txt\"{next}FNR==1{print FILENAME}1" *.txt>out.txt
复制代码
作者: 13545876873 时间: 2024-10-22 10:19
回复 7# qixiaobin0715
可以了,完美解决了我的问题。
感谢大哥的帮助
作者: 13545876873 时间: 2024-10-22 10:54
回复 8# hfxiang
感谢大哥的帮助
作者: aloha20200628 时间: 2024-10-22 11:14
本帖最后由 aloha20200628 于 2024-10-22 11:23 编辑
回复 5# 13545876873
再给一个版本,能自适应每个文本文件末尾是否有空行(无则加入空行有则忽略以免乱套)
另注》用 dir 列表结果可取其多种排序功能,灵活安排各文本文件的合并顺序(如按文件名升序或降序/创建时间/修改时间/...等),以下代码采用默认的文件名升序方式合并当前目录中的各文本文件...
- @echo off &(for /f "delims=" %%F in ('dir/b/a-d *.txt') do (echo,%%~nF&type "%%F"&findstr /v $ "%%F">nul &&echo,))>"txt.all" 2>nul
- ren "txt.all" "合并.txt"&pause&exit/b
复制代码
作者: 13545876873 时间: 2024-10-22 11:53
本帖最后由 13545876873 于 2024-10-22 11:55 编辑
回复 11# aloha20200628
感谢大哥的帮助,这个也可以实现我想要的功能
我突然想到一个问题:合并文档的第一行,和第二行,
能否实现用 Tab 键换行,而不是用Enter键换行
如果用Tab 键换行,把合并之后的内容复制的excel表里,可以这样呈现:第一列是txt文档名称,第二列是相应的内容
作者: aloha20200628 时间: 2024-10-22 12:23
回复 12# 13545876873
试试以下这个版本
- @echo off &(for /f "delims=" %%F in ('dir/b/a-d *.txt') do (set/p="%%~nF "<nul&type "%%F"&findstr /v $ "%%F">nul &&echo,))>"txt.all" 2>nul
- ren "txt.all" "合并.txt"&pause&exit/b
复制代码
作者: 13545876873 时间: 2024-10-22 14:04
回复 13# aloha20200628
可以完美解决我的问题,感谢大哥的帮助
作者: qixiaobin0715 时间: 2024-10-22 14:59
- @echo off
- set _out.txt=true
- (for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- if not defined _%%i (
- set /p=%%~ni <nul
- type "%%i"
- echo,
- )
- ))>out.txt
- pause
复制代码
作者: 13545876873 时间: 2024-10-22 15:42
回复 15# qixiaobin0715
这个也可以,非常感谢大哥们的帮助
作者: fzp070 时间: 2024-10-22 23:48
学习了,多位大佬分享方案!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |