Batch file 将CSV文件与包含每行文件名的批处理文件合并

Batch file 将CSV文件与包含每行文件名的批处理文件合并,batch-file,csv,merge,Batch File,Csv,Merge,在前面的问题中搜索,找不到任何匹配的我的问题 我需要一个批处理文件,它可以将文件夹中的所有CSV文件合并为一个新的合并CSV文件,并且在每个合并行中,它会将原始文件名添加到每个传输字符串的末尾。我尝试了这个命令,但不起作用: for /F "tokens=1* delims=" %%i in (^"SO_*.csv^") do @echo %%i,%%~ni >> MERGED.csv 它不拾取行,只拾取“SO*.csv”和第一个实际文件的文件名,将它们放入MERGED.csv并停

在前面的问题中搜索,找不到任何匹配的我的问题

我需要一个批处理文件,它可以将文件夹中的所有CSV文件合并为一个新的合并CSV文件,并且在每个合并行中,它会将原始文件名添加到每个传输字符串的末尾。我尝试了这个命令,但不起作用:

for /F "tokens=1* delims=" %%i in (^"SO_*.csv^") do @echo %%i,%%~ni >> MERGED.csv
它不拾取行,只拾取“SO*.csv”和第一个实际文件的文件名,将它们放入MERGED.csv并停止

我哪里出错了

提前谢谢

@echo off
    break > merged.csv
    for %%f in (so_*.csv) do for /F "tokens=*" %%g in ('type "%%f"') do echo %%g,%%f >> merged.csv
还是为了更快的方法

@echo off

    break > merged.csv
    for /F "tokens=1,* delims=:" %%f in ('findstr /R "." so_*.csv') do echo %%g,%%f >> merged.csv

为什么是卡雷特?要处理文件中的行,您需要使用:
for/F“usebackq”%%i in(“SO.*.csv”)..
for/F%%i in(SO.*.csv)..
!谢谢,我只是想理解逻辑,因为我知道你把它分为两个周期,每个文件一个周期,文件中每个字符串一个周期?你是对的。由于需要在每一行中包含文件名,因此需要对每一行进行处理。每个文件都需要这样做。在完整的文件掩码上使用findstr有一种更快的方法,但此解决方案与您正在尝试的类似。无论如何,将使用它更新答案。
>merged.csv echo%%g,%%f
@foxidrive,或从'echo%%g,%%f>>merged.csv行中删除空格。当变量末尾有数字时,这是个问题。尝试以这种方式将1或2回显到文件中。