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

[文本处理] [已解决]批处理怎样把多个文件夹中相同文本名称合并后生成在新文件夹中

[复制链接]
发表于 2021-9-6 11:41:19 | 显示全部楼层 |阅读模式
202101文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
有N个文本
202102文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
有N个文本
202103文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
有N个文本
202104文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
有N个文本

202105文件夹内有以下文本
........
有N个文件夹
请帮忙写一个将以上N个文件夹中的N个同名的文本合并然后生成一个新的文件夹,文件夹中同样生成合并后同名的文本
合并文件夹内有以下文本
1.txt
2.txt
3.txt
4.txt
......
有N个文本

请老师抽空帮写一个批处理,谢谢!
发表于 2021-9-6 13:53:00 | 显示全部楼层
回复 1# PCL0769
假设每个子文件夹中的文件名一样多,文件名都一样。
批处理文件放在与子文件夹平行的目录中。
  1. @echo off
  2. set "Folder=D:\abc"
  3. md "%Folder%"
  4. for %%i in (202101\*.txt) do (
  5.     (for /d %%a in (*) do (
  6.         type "%%a\%%~nxi"
  7.     ))>"%Folder%\%%~nxi"
  8. )
  9. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
PCL0769 + 1 多谢!

查看全部评分

 楼主| 发表于 2021-9-6 14:04:07 | 显示全部楼层
本帖最后由 PCL0769 于 2021-9-6 14:05 编辑
回复  PCL0769
假设每个子文件夹中的文件名一样多,文件名都一样。
批处理文件放在与子文件夹平行的目录 ...
qixiaobin0715 发表于 2021-9-6 13:53

老师好!谢谢!
出现下面提示:

系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
请按任意键继续. . .

传不图片及附件
D:\数据\周转
文件夹在周转中,里面有202101  202102 202103.....文件夹,然后每个文件夹中有30多个记事本,1.TXT  2.TXT  3.TXT.......
发表于 2021-9-6 14:15:00 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-9-6 14:17 编辑

回复 3# PCL0769
D盘中abc文件夹中有无合并文件?
不要先顾着评分,解决问题才是关键。
 楼主| 发表于 2021-9-6 14:17:32 | 显示全部楼层
D:\数据\周转
文件夹在周转中,里面有202101  202102 202103.....文件夹,然后每个文件夹中有30多个记事本,1.TXT  2.TXT  3.TXT.......

将同名记事本合并后在周转文件夹中生成一个合并文件夹,合并文件夹中还是按原记事本名1.TXT  2.TXT  3.TXT.......保存
 楼主| 发表于 2021-9-6 14:21:45 | 显示全部楼层
D:\abc
有文件夹,里面有个%~nxa  0KB 没看到后缀是什么
发表于 2021-9-6 14:26:54 | 显示全部楼层
回复 6# PCL0769
应当是复制代码时出现了问题,重新复制代码再试试
发表于 2021-9-6 14:28:43 | 显示全部楼层
回复 1# PCL0769
  1. @echo off
  2. set "SrcFolder=D:\数据\周转"
  3. set "DstFolder=D:\数据\合并"
  4. if not exist "%SrcFolder%" (
  5.     goto :eof
  6. )
  7. if not exist "%DstFolder%" (
  8.     md "%DstFolder%"
  9. )
  10. for /f "delims=" %%i in ('dir /b /ad "%SrcFolder%"') do (
  11.     for /f "delims=" %%j in ('dir /b /a-d "%SrcFolder%\%%i\*.txt" 2^>nul') do (
  12.         >"%DstFolder%\%%j" type "%SrcFolder%\%%i\%%j"
  13.         for /f "delims=" %%k in ('dir /b /ad "%SrcFolder%" ^| findstr /v /b /e "%%i"') do (
  14.             if exist "%SrcFolder%\%%k\%%j" (
  15.                 >>"%DstFolder%\%%j" type "%SrcFolder%\%%k\%%j"
  16.             )
  17.         )
  18.         >>"%DstFolder%\%%j" echo,
  19.     )
  20.     goto :eof
  21. )
复制代码

评分

参与人数 1技术 +1 收起 理由
PCL0769 + 1 谢谢老师的帮助!

查看全部评分

发表于 2021-9-6 14:28:47 | 显示全部楼层
代码要放在D:\数据\周转 下
 楼主| 发表于 2021-9-6 14:32:15 | 显示全部楼层
本帖最后由 PCL0769 于 2021-9-6 14:52 编辑

谢谢!
可能是自制时出错,重新复制后运行。正在生成中......
 楼主| 发表于 2021-9-6 14:41:24 | 显示全部楼层
合并成功,谢谢老师的帮助!
 楼主| 发表于 2021-9-6 15:12:26 | 显示全部楼层
回复 8# Batcher
@echo off
set "SrcFolder=D:\数据\周转"
set "DstFolder=D:\数据\周转\合并"

谢谢老师出手帮助!也成功合并。
 楼主| 发表于 2021-9-6 15:41:34 | 显示全部楼层
本帖最后由 PCL0769 于 2021-9-6 15:43 编辑

回复 8# Batcher
合并后的1.txt  38.0 MB (39,897,024 字节)  里面有重复,等于是一个数据生成了两次在合并记事本里面

用楼上老师的(abc)合并后1.txt  19.0 MB (19,950,522 字节)
 楼主| 发表于 2021-9-6 15:46:16 | 显示全部楼层
知道是什么原因了,新生成的合并文件夹不能放在同一个目录
发表于 2021-9-6 20:50:48 | 显示全部楼层
本帖最后由 newswan 于 2021-9-6 20:58 编辑

如果放源目录下,要排除合并的文件,避免被读取

  1. set sour=aaa
  2. set dest=bbb
  3. for /f  "usebackq tokens=* delims=" %%a in (`dir /s /b "%sour%\*.txt"`) do (
  4.     type "%%~fa" >> "%dest%\%%~na.txt"
  5. )

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 00:34 , Processed in 0.036985 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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