@ECHO OFF
SETLOCAL
SET "sourcedir=."
SET "filemask=csv*.csv"
(
FOR /f "tokens=1*delims=[]" %%c IN (
'dir /b /a-d /on "%sourcedir%\%filemask%" ^|find /n /i ".csv"'
) DO (
SET "firstrow=Y"
FOR /f "usebackqdelims=" %%r IN ("%sourcedir%\%%d") DO (
IF DEFINED firstrow IF %%c==1 ECHO Sourcefile,%%r
IF NOT DEFINED firstrow ECHO %%c,%%r
SET "firstrow="
)
)
)>importfile.csv
根据需要设置您的目录和文件掩码,然后-以基本形式(仅文件名)
构建目标文件的目录,按名称顺序忽略目录名 -在任何情况下都找到(将出现在每一行中)并将它们编号
-选项将数字分配给 %%c 并将文件名分配给 %%d/b
/a-d
/on
".csv"
/i
/n
[]
"tokens=1*delims=[]"
对于找到的每个文件,
- 标记我们正在处理第一行 - 将文件中的每一行读入 %%r - 如果它是文件#1 中的第一行,则将“源文件”添加到标题行 - 如果不是第一行,输出文件#,以行文本为前缀 - 清除“第一行”标志
请注意,输出文件名不应与选择的文件掩码匹配。例如,可以生成一个 .txt 文件然后重命名它。
我假设您需要特别对待第一行。如果您不这样做,那么只需使用关键字REM-outSET "firstrow=Y"
行(最简单的选项)REM
当然,如果您ECHO %%d,%%r
不是,ECHO %%c,%%r
那么将出现源文件名而不是文件的序列号(并且可以进行一些其他简化 - 但如果您愿意,这是最简单的选择)