找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34184|回复: 12

[文本处理] 批量合并多个TXT文件自动换行,把各文件名(不带后缀名)带入对应首列

[复制链接]
发表于 2017-11-23 11:35:31 | 显示全部楼层 |阅读模式
请教大神,求实现如题的BAT代码,在网上搜索了好久,分开或者两两结合的功能都可以实现,但是三个都要达到的就没有了,需要的功能具体如下:
文件1: 文件名为“上海.txt”,内容为“11111”;
文件2:文件名为“北京.txt”,内容为“1234”;
文件3:文件名为“广州.txt”,内容为“123456”;
文件4:文件名为“深圳.txt”,内容为“888;
......
合并以后,想要实现的内容是:
上海 11111
北京 1234
广州 123456
深圳 888
......
发表于 2017-11-23 12:49:14 | 显示全部楼层
  1. @echo off
  2. for /f %%a in ('dir /b *.txt') do (
  3.         for /f %%b in (%%a) do (
  4.                 echo %%~na %%b>>合并.txt
  5.         )
  6. )
  7. pause
复制代码
 楼主| 发表于 2017-11-23 12:54:48 | 显示全部楼层
回复 2# Blitz

运行出来的结果丢了一列数据。原文件内容是2列的  合并后的文件还是2列,文件名为第一列,原文件的第1列则变成第2列,原第2列的内容没了
发表于 2017-11-23 13:06:49 | 显示全部楼层
回复 3# 晓瑜


    说清楚文件内容和你的要求
 楼主| 发表于 2017-11-23 13:11:20 | 显示全部楼层
回复 4# Blitz

    不好意思原文件由于涉及保密不能上传到网上,大致是这样的:
文件1: 文件名为“上海.txt”,内容为“111  111”;
文件2:文件名为“北京.txt”,内容为“12  34”;
文件3:文件名为“广州.txt”,内容为“123  456”;
文件4:文件名为“深圳.txt”,内容为“888  888;
......
合并以后想要生成的文件内容需要是:
上海 111  111
北京 12  34
广州 123  456
深圳 888  888
......
 楼主| 发表于 2017-11-23 13:13:41 | 显示全部楼层
回复 5# 晓瑜


    上面代码运行完以后,得到的结果是:
上海 111
北京 12
广州 123
深圳 888
......

原文件中的第2列没了
发表于 2017-11-23 13:14:30 | 显示全部楼层
回复 5# 晓瑜
  1. @echo off
  2. for /f %%a in ('dir /b *.txt') do (
  3.         for /f "delims=" %%b in (%%a) do (
  4.                 echo %%~na %%b>>合并.txt
  5.         )
  6. )
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
白鹤隐云 + 1 感谢分享

查看全部评分

 楼主| 发表于 2017-11-23 13:18:54 | 显示全部楼层
回复 7# Blitz


      可以了  太牛了   万分感谢
 楼主| 发表于 2017-11-23 14:48:30 | 显示全部楼层
回复 7# Blitz


    大神您好,还要麻烦您帮忙设计个代码。如果在包含以上需求的同时,还需要删除每个TXT文件的前3行然后进行合并,
发表于 2017-11-23 16:00:18 | 显示全部楼层
回复 9# 晓瑜


    没明白你的意思
 楼主| 发表于 2017-11-23 17:28:09 | 显示全部楼层
回复 10# Blitz


    是这样的 每个TXT文件的前三行数据都是文字,从第4行开始才是数据,我要合并的是每个文件中的数据,所以合并时候要把前3行删掉,其他还是需要把文件名称放到首列,文件和文件之间换行
发表于 2017-11-23 17:36:13 | 显示全部楼层
回复 11# 晓瑜


    那你能不能一次说清楚?
  1. @echo off
  2. for /f %%a in ('dir /b *.txt') do (
  3.         for /f "skip=3 delims=" %%b in (%%a) do (
  4.                 echo %%~na %%b>>合并.txt
  5.         )
  6. )
  7. pause
复制代码
 楼主| 发表于 2017-11-27 18:11:27 | 显示全部楼层
回复 12# Blitz

这是另外一个文件夹,我是第一次接触,弄完一个做下个时候才发现文件内容不一样,不好意思,麻烦您了,谢谢,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:41 , Processed in 0.024553 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表