Batch file 合并多个文本文件&;创建一个文件
一些背景:Batch file 合并多个文本文件&;创建一个文件,batch-file,Batch File,一些背景: 我完全不熟悉批处理脚本 我试图在一个文件夹中批量合并多个文本文件,而不复制页眉/页脚 文本文件位于文件夹中,并且文本文件的名称会更改,因此文件夹中的任何文本文件都将合并 从该合并文件生成的主文件将具有标题 主文件将保存在今天的日期,Q作为名称。(010913Q) data1.text: XYZ公司名称日期:31082013 Sam81211。。。。。。。。。。。。。。 约翰71511。。。。。。。。。。。。。。 Bob61511。。。。。。。。。。。。。。 全部的 数据2.text
- 我完全不熟悉批处理脚本
- 我试图在一个文件夹中批量合并多个文本文件,而不复制页眉/页脚
- 文本文件位于文件夹中,并且文本文件的名称会更改,因此文件夹中的任何文本文件都将合并
- 从该合并文件生成的主文件将具有标题
- 主文件将保存在今天的日期,Q作为名称。(010913Q)
data1.text: XYZ公司名称日期:31082013 Sam81211。。。。。。。。。。。。。。 约翰71511。。。。。。。。。。。。。。 Bob61511。。。。。。。。。。。。。。 全部的 数据2.text: XYZ公司名称日期:31082013 账单71410。。。。。。。。。。。。。。 莎拉9811。。。。。。。。。。。。。。 乔伊6210。。。。。。。。。。。。。。 全部的 数据3.text: XYZ公司名称日期:31082013 汉克3509。。。。。。。。。。。。。。 莎莉42811。。。。。。。。。。。。。。 Gina1211。。。。。。。。。。。。。。 全部的 主文件.Text XYZ公司名称日期:31082013
这使用了恩多的想法 编辑我添加了一行,显示了文件处理的顺序,并更正了最终文件名 它在这里工作,并提供以下功能:复制数据1.text 010913Q >010913Q更多+1 >010913Q更多+1
这基本上是相同的代码-您的文件名按字母字符排序,并且需要采用可排序的格式,因为这将决定首先处理哪个文件、第二个文件等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%"
到目前为止您尝试了什么?您到底卡在哪里?谢谢foxidrive,请帮助删除页脚行,这不是必需的。(总计………)上面的最后两行应该删除页脚。抱歉,Foxidrive,在测试运行后,我发现从文件2(data2.text:)中,页眉后的行也会被删除,在上面的情况下是(Billy71410………)&否则一切都很完美,请看一看。谢谢。嗨,Foxidrive,实际上没有文件排序格式的问题。嗨,Foxidrive,实际上没有文件排序的问题。当第二个文件合并/追加标题删除后的行时,它会额外删除一行。3,4文件被正确地追加,那么为什么它会从第二个文件中删除2行并追加。请建议。谢谢@echo关闭 对于/f“delims=“%”中的%%a('wmic OS Get localdatetime^ | find“”),请设置“dt=%%a” 设置“YYYY=%dt:~0,4% 设置“MM=%dt:~4,2% 设置“DD=%dt:~6,2% 设置“HH=%dt:~8,2% 设置“最小=%dt:~10,2% 设置“秒=%dt:~12,2% set name=tmp.tmp 设置“标志=” 对于(*.text)中的%%a,请执行以下操作( 回显处理“%%a” 如果未定义标志( 复制“%%a”“%name%”nul 设置标志=1 )否则( 更多+1“%%a”>>“%name%” ) ) findstr/v“^Total”<%name%>%mm%%dd%%yyyy:~2%Q” 删除“%name%”
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%"