Board logo

标题: [文本处理] 【已解决】用bat把多个文本合并为对应一个文本? [打印本页]

作者: zllk    时间: 2023-9-16 22:58     标题: 【已解决】用bat把多个文本合并为对应一个文本?

本帖最后由 zllk 于 2023-9-17 01:55 编辑

“数据”文件夹有以下文件:
A商品数量01.txt
A商品数量02记录123.txt
D销售001.txt
……
D销售191旧.txt
DDD销售量1.txt
D销售量1.txt
……
D销售量146.txt


A商品数量1.txt文本内容如下:
  1. A商品01 512
  2. A商品02 141
复制代码
A商品数量2记录123.txt文本内容如下:
  1. A商品01 467
  2. A商品03 631
  3. A商品04 495
  4. A商品06 741
复制代码
执行批处理效果

A商品数量_合并.txt文本内容如下:
  1. A商品01 512
  2. A商品02 141
  3. 【区分】A商品01 467
  4. A商品03 631
  5. A商品04 495
  6. A商品06 741
复制代码
“数据合并”子文件夹有以下文件:
A商品数量_合并.txt
D销售_合并.txt
D销售量_合并.txt
作者: hlzj88    时间: 2023-9-16 23:48

难点在于  D销售  D销售量  DDD销售量  名称之间的正确区分,感觉不预先把这些进行重命名,无法正确处理。
期待高手写出代码。
作者: 77七    时间: 2023-9-17 01:09

  1. @echo off
  2. md 数据合并
  3. for /f "tokens=1* delims=0123456789" %%a in ('dir /b /a-d *.txt') do (
  4. set /a #%%a+=1
  5. )
  6. for /f "tokens=1 delims==#" %%x in ('set # ^|findstr /vec:"=1"') do (
  7. set m=
  8. (for /f "delims=" %%i in ('dir /b /a-d *.txt ^|findstr /rc:"^%%x[0-9][0-9]*"') do (
  9. for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
  10. if %%a equ 1 (
  11. if defined m (
  12. echo 【区分】%%b
  13. ) else (
  14. echo=%%b
  15. )
  16. ) else (
  17. echo=%%b
  18. )
  19. )
  20. set m=1
  21. ))>"数据合并\%%x_合并.txt"
  22. )
  23. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2