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

[文本处理] 更新:批处理把文档按要求合并,这个感觉好难!,大神们一起看看

本帖最后由 WYXpclOK 于 2015-11-20 22:52 编辑

我的文件夹DATAS里有文档:
AA-A1-A1-01.CSV
AA-A1-A1-02.CSV
AA-A1-A1-03.CSV
BB-B1-B1-01.CSV
BB-B1-B1-02.CSV
CC-C2-C2-02.CSV
CC-C2-C2-03.CSV
DD-D4-D4-01.CSV
........
等此类CSV文档
每个文档的内容都是如下格式:
AA-A1-A1-01的内容:
AA-A1-A1-01                                                                              
AA-A1-A1-01
X,Y,COMP,B,F1-1,F1-2,F1-3,F2,F3,IR,F4,IV,W1,W2,C,W
0XXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXX
.........
AA-A1-A1-02的内容:
AA-A1-A1-02              
AA-A1-A1-02
X,Y,COMP,B,F1-1,F1-2,F1-3,F2,F3,IR,F4,IV,W1,W2,C,W
0XXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXX
.........
要求1:让文档按照:AA-A1-A1-01+AA-A1-A1-02+AA-A1-A1-03    BB-B1-B1-01+BB-B1-B1-02   CC-C2-C2-01+CC-C2-C2-03方式合并文档,也就是说要名字除了-01,-02,-03等的序号不一样其他的名字都要一样才可以合并.
要求2:文档合并后的文档到另一文件夹中,名字为-01序号前的名字如:(AA-A1-A1)并且内容只保留第一个文档的前三行,第二或者第三个文档的前三行不要,后面的内容接第一个文档最后一行的下一行.例如:
合并AA-A1-A1-01+AA-A1-A1-02+AA-A1-A1-03后新的文档名字为AA-A1-A1
且内容:
AA-A1-A1-01                                                                              
AA-A1-A1-01
X,Y,COMP,B,F1-1,F1-2,F1-3,F2,F3,IR,F4,IV,W1,W2,C,W
0XXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXX
.........
0XXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXX
.........
0XXXXXXXXXXXXXXXXXXXXX
1XXXXXXXXXXXXXXXXXXXXX
2XXXXXXXXXXXXXXXXXXXXX
3XXXXXXXXXXXXXXXXXXXXX
.........
要求3:在合并时要像附件里图片那样,如果在输入需要合并的文档名称时在DATAS文件里没有这个文档要提示“找不到此文件请确认重新输入”,如果有就继续下一步。还要循环使用;批处理可以在任何地方,不要在DATAS文件夹里,也就是说可以指定要合并文档的所在文件夹路径,和合并文档后存放的路径。

附件有更新:链接: http://pan.baidu.com/s/1jGnRo8Y 密码: 5rn1
希望大家帮我看看这个应该怎么写!!!

附件传网盘。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 2# 依山居


文档你可以自己按照我的格式建几个

TOP

标题

回复 1# WYXpclOK 大神们帮我看看

TOP

最好传点样本用于测试

TOP

这是要比懒呢,你懒我更懒。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

附件里有样本

TOP

有人看了吗

TOP

本帖最后由 wankoilz 于 2015-11-19 22:12 编辑

把批处理和待处理文件放一起执行:
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p target=请输入要建立的文档:
  3. set/p first=请输入要合并的文档1:
  4. if not exist %first%.csv exit
  5. (for /f "delims=" %%a in (%first%.csv) do (
  6. set/a n+=1 & echo %%a & if !n! equ 3 goto :out
  7. ))>%target%.csv
  8. :out
  9. for /f "delims=" %%a in ('dir/b %target%-*.csv') do (
  10. more +3 %%a >>%target%.csv
  11. )
  12. pause
复制代码

TOP

回复 9# wankoilz


    不可以指定需要合并文档的文件夹和合并后存放文档的文件夹吗?

TOP

回复 9# wankoilz


    需要指定要合并的文档1和文档2乃至文档3,合并后的存放路径也要指定

TOP

多运行几次不就可以了

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. :: 要合并的文件位置
  3. set sourcePath=%~dp0DATAS
  4. :: 目的文件夹
  5. set target=%~dp0DATAS\合并后
  6. :: 确认目的文件夹存在
  7. mkdir DATAS\Target >nul
  8. for /f "tokens=1-3* delims=-" %%a in ('dir /b /a-d "%sourcePath%"^|sort') do (
  9. set file=%%a-%%b-%%c-%%d
  10. if not defined %%a-%%b-%%c (
  11. echo;--------------------------------------------------
  12. echo;合并!file!...
  13. set %%a-%%b-%%c=1&set n=0
  14. for /f "delims=" %%i in (%sourcePath%\!file!) do (
  15. set /a n+=1
  16. if !n! leq 3 echo;%%i>>"%target%\%%a-%%b-%%c.%%~xd"
  17. )
  18. ) else (
  19. echo;合并!file!
  20. more +3 "%sourcePath%\!file!">>"%target%\%%a-%%b-%%c.%%~xd"
  21. )
  22. )
  23. pause & exit /b
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

还是请看看我的要求吧

TOP

哦,你要求的太难了,不会
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

返回列表