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

[文件操作] 批处理如何在指定文件列表的前提下遍历目录合并同名文件?

求帮助,如何在指定文件列表的前提下遍历目录合并同名文件?
各位仙翁:

     本人工作中经常要从大量报表数据包zip中查询和汇总报表,由于下辖十个门店,每个门店的报表每天更新一次,生成一个以日期命名的zip包,包中文件以csv格式存在,通常一个包里有40个文件(不固定,有些报表不是天天有),分别代表不同种类的数据。

     每月至少要汇总两次报表,按种类汇总十个门店十五天内的同名报表,然后再做相关分析,这项工作不胜其烦。现在老板要求把近百个门店的分析工作统一管理,工作量一下增加十倍,所以希望寻求帮助。

     下面我把目录结构简单描述一下(,当然,如果可以有代码直接从zip包中提取文件合并就更好了,不能的话,解压文件将可生成对应zip文件名的目录。)
子目录样式和其下文件样式:
     20150901-01  (意思是01号门店9月1日的日报)

               a0001.csv

               a0002.csv

              a0003.csv

              a0004.csv

              a0005.csv

  ......

     20150901-02

             a0003.csv

              a0004.csv

              a0005.csv

.....



第一层需求:若作为当前目录的子目录,希望可以遍历目录,把同名文件(按目录名称的升序)合并后存放到一个汇总目录中?(合并的文件名加“汇总”前缀,比如所有目录下按 a0004.csv合并的文件,命名为:“汇总a0004.csv”)

第二层需求:有时不一定要全部文件名都实现合并,是否可以用一个配置文件指定需合并的文件名的列表,由命令读取并执行,灵活定制合并文件的集合?

合并你用copy

TOP

回复 2# terse


    copy,谢谢,当然,
    但一行一行地写,涉及几个文件就得写几行,要是一百个门店,365天,那就得写36500行,诚然是可以执行,但那算什么批处理呢?

TOP

回复 3# 那谁谁
你是合并同日期同文件名 还是不同日期的同文件名呢?
初步思路 for 循环 dir 然后 copy
同日期同文件名的话 列表文件数应该不超过压缩包里文件的数量 并非如你所说的累加

TOP

不保证通用
先读取A.txt
a.txt 内容 如下格式
20151001 1.csv 3.csv
20151002 1.csv 3.csv
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1*" %%a in (a.txt) do (
  3.     for %%i in (%%b) do (
  4.         set "cp="
  5.         for /d %%j in (%%a-*) do (
  6.             if exist "%%j\%%i" set cp=!cp!+"%%j\%%i"
  7.         )
  8.         if defined cp copy /b !cp:~1! "汇总-%%a-%%i.csv"
  9.     )
  10. )
  11. pause
复制代码

TOP

返回列表