批处理将文件名放在每行的前面,并在子目录中合并多个TXT文件

时间:2019-01-04 21:15:16

标签: batch-file text

我有多个* Extract.txt文件位于多个子文件夹中,我想将这些文件上载到SQL Server的公用表中。我认为最好的开始方法是将数据合并到一个合并的txt文件中,然后将其上传到数据库。合并的文件应在文件的每行数据前添加文件名。每个文件在第一行中都有相同的标题,可以在合并的文件中跳过这些标题,也可以在SQL中删除重复的行。

我使用了下面的代码,该代码适用于与批处理文件位于同一位置的* extract.txt文件,但是它不会在子文件夹中循环。我尝试了/ R和其他“ For”限定词,但输出为空。

    @echo off
    setlocal EnableDelayedExpansion

set "file=" (for /f "tokens=1* delims=:" %%a in ('findstr "^" *extract.txt') do ( if "%%a" neq "!file!" ( set "file=%%a" ) else ( echo %%~Na:%%b ) )) > output.tmp REM ren output.tmp output.txt

我希望输出为:

文件名 1 数据数据数据数据......
filename 2 数据数据数据数据......
filename 3 数据数据数据数据......

但同样,该代码不会在子文件夹中的文本文件中循环显示

1 个答案:

答案 0 :(得分:0)

@echo off
setlocal EnableDelayedExpansion

set "file="
(for /F "tokens=1* delims=:" %%a in ('findstr /s "^" *extract.txt') do (
    if "%%a" neq "!file!" (
      set "file=%%a"
   ) else (
      echo %%~Na:%%b
   )
)) > output.tmp
REM ren output.tmp output.txt