你好,我正在寻找一个PowerShell脚本,可以将一个目录中的所有csv文件合并成一个文本文件(.txt)。所有的csv文件都有相同的标题,该标题始终存储在每个文件的第一行。因此,我需要从第一个文件中取出标题,并跳过其余文件的第一行。
我已经找到了一个批处理文件,可以完全满足我的需求,但是我有超过4000个csv文件在单个目录中,这需要超过45分钟来完成任务。
@echo off
ECHO Set working directory
cd /d %~dp0
Deleting existing combined file
del summary.txt
setlocal ENABLEDELAYEDEXPANSION
set cnt=1
for %%i in (*.csv) do (
if !cnt!==1 (
for /f "delims=" %%j in ('type "%%i"') do echo %%j >> summary.txt
) else (
for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> summary.txt
)
set /a cnt+=1
)
有什么建议可以创建比这个批处理代码更有效的PowerShell脚本吗?
谢谢。
约翰
merged\merged.csv
。也许分批运行上述操作?即尝试合并10个而不是100个csv文件。我已经尝试过将约300个文件合并成总计约100MB的文件,最终生成了一个大约500MB的文件,并且只需要大约10秒钟。此外,请确保您不要尝试合并您的合并文件,这是不可取的。 - stinkyfriend