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

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

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个文本

请老师抽空帮写一个批处理,谢谢!

回复 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

评分人数

TOP

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

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

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

传不图片及附件
D:\数据\周转
文件夹在周转中,里面有202101  202102 202103.....文件夹,然后每个文件夹中有30多个记事本,1.TXT  2.TXT  3.TXT.......

TOP

本帖最后由 qixiaobin0715 于 2021-9-6 14:17 编辑

回复 3# PCL0769
D盘中abc文件夹中有无合并文件?
不要先顾着评分,解决问题才是关键。

TOP

D:\数据\周转
文件夹在周转中,里面有202101  202102 202103.....文件夹,然后每个文件夹中有30多个记事本,1.TXT  2.TXT  3.TXT.......

将同名记事本合并后在周转文件夹中生成一个合并文件夹,合并文件夹中还是按原记事本名1.TXT  2.TXT  3.TXT.......保存

TOP

D:\abc
有文件夹,里面有个%~nxa  0KB 没看到后缀是什么

TOP

回复 6# PCL0769
应当是复制代码时出现了问题,重新复制代码再试试

TOP

回复 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

评分人数

    • PCL0769: 谢谢老师的帮助!技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

代码要放在D:\数据\周转 下

TOP

本帖最后由 PCL0769 于 2021-9-6 14:52 编辑

谢谢!
可能是自制时出错,重新复制后运行。正在生成中......

TOP

合并成功,谢谢老师的帮助!

TOP

回复 8# Batcher
@echo off
set "SrcFolder=D:\数据\周转"
set "DstFolder=D:\数据\周转\合并"

谢谢老师出手帮助!也成功合并。

TOP

本帖最后由 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 字节)

TOP

知道是什么原因了,新生成的合并文件夹不能放在同一个目录

TOP

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

TOP

返回列表