返回
如何轻松合并多个 CSV 文件并为合并后的文件添加文件名字段?
windows
2024-03-01 05:32:07
## 如何同时合并多个 CSV 文件,并将文件名添加为“文件名称”字段
### 问题
需要合并多个 CSV 文件(均采用相同格式)为一个文件,并将文件名添加为最后一个字段,字段名称为“文件名称”。由于所有 CSV 文件的字段名称相同,因此不应重复字段名称。目标是使用批处理脚本实现此目的。
### 解决方法
以下批处理脚本可用于合并多个 CSV 文件并添加文件名作为最后一个字段:
@echo off
setlocal enabledelayedexpansion
pushd C:\Users\Ak\Desktop\Test\New folder
set /p first=y
set newfile=Merge_CSV_HB_R5217476_REDReport.csv
for %%F in (*.csv) do (
if not %%F==%newfile% (
if not defined first (
echo C1,C2,File Name>%newfile%
set first=y
)
for /f "delims=" %%i in (%%F) do (
set line=!line!,%%i
)
set line=!line!,%%~nF
)
)
popd
### 脚本分析
-
pushd
和popd
命令用于切换到包含 CSV 文件的目录。 -
变量
first
用来标记是否需要写文件头。 -
newfile
变量指定合并后的文件名。 -
for
循环遍历当前目录中的所有 CSV 文件(但不包括合并后的文件)。 -
如果当前文件不是合并后的文件,则将文件头(
C1,C2,File Name
)写入合并后的文件。 -
使用嵌套
for
循环逐行读取当前文件,并将每行追加到合并后的文件中。 -
最后,将当前文件的名称(
%%~nF
)追加到合并后的文件,作为“文件名称”字段。
### 优化
此脚本经过了以下优化:
- 删除了不必要的
ECHO
命令。 - 将两个
FOR
循环合并为一个。 - 使用延迟扩展(
enabledelayedexpansion
)来提高效率。 - 使用
popd
命令返回到原始目录。
### 注意
请确保所有 CSV 文件的字段名称相同,否则合并可能会出现问题。
### 常见问题解答
-
为什么需要合并多个 CSV 文件?
- 合并多个 CSV 文件可以方便地将数据从多个来源汇总到一个文件中,以便进行分析、处理和报告。
-
如何确保 CSV 文件的格式相同?
- 在合并之前,可以先使用脚本或工具检查 CSV 文件的格式,并确保它们具有相同的字段名称和数据类型。
-
合并后的文件在哪里找到?
- 合并后的文件将保存在您指定
newfile
变量的目录中。
- 合并后的文件将保存在您指定
-
如何修改文件名字段的名称?
- 可以在文件头部分修改
File Name
字段名称,使其与您的需要相匹配。
- 可以在文件头部分修改
-
可以合并任意数量的 CSV 文件吗?
- 理论上可以,但实际合并数量取决于脚本的处理能力和内存限制。