0

一些背景:

  • 我对批处理脚本完全陌生
  • 我正在尝试在一个文件夹中批量合并多个 TEXT 文件,而不会重复页眉/页脚。
  • 文本文件在文件夹中,并且文本文件的名称发生变化,因此文件夹中的任何文本文件都将被合并。
  • 从此合并文件生成的主文件将具有 HEADER。
  • 主文件将保存在今天的日期和 Q 作为名称。(010913Q)

    data1.text:
    XYZ Company's Name Date:31082013
    Sam81211..............
    John71511..............
    Bob61511..............
    Total ................................
    
    data2.text:
    XYZ Company's Name Date:31082013
    Billy71410..............
    Sara9811..............
    Joey6210..............
    Total ................................
    
    data3.text:
    XYZ Company's Name Date:31082013
    Hank3509..............
    Sally42811..............
    Gina1211..............
    Total ................................
    
    Master File.Text
    XYZ Company's Name Date:31082013    <--- HEADER
    Sam81211
    John71511
    Bob61511
    Billy71410
    Sara9811
    Joey6210
    Hank3509
    Sally42811
    Gina1211
    
    SAVED AS 010913Q in the same folder.
    
4

2 回答 2

0
copy data1.text 010913Q
<data2.text>>010913Q more +1
<data3.text>>010913Q more +1
于 2013-09-02T06:46:50.247 回答
0

这使用了 Endoro 的想法。

编辑 我添加了一行显示文件处理顺序并更正了最终文件名。

它在这里工作并提供:

XYZ Company's Name Date:31082013
Sam81211..............
John71511..............
Bob61511..............
Billy71410..............
Sara9811..............
Joey6210..............
Hank3509..............
Sally42811..............
Gina1211..............

这基本上是相同的代码 - 您的文件名按字母字符排序,并且需要采用可排序的格式,因为这将确定首先处理哪个文件,第二个等等。

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set "dt=%%a"
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%"
set "Min=%dt:~10,2%"
set "Sec=%dt:~12,2%"

set name=tmp.tmp
set "flag="
for %%a in (*.text) do (
echo processing "%%a"
   if not defined flag (
     copy "%%a" "%name%" >nul
     set flag=1
    ) else (
     more +1 "%%a" >>"%name%"
   )
)
findstr /v "^Total" < "%name%" >"%mm%%dd%%yyyy:~2%Q"
del "%name%"
于 2013-09-02T09:08:01.737 回答