使用 powershell 合并多个 CSV 文件

Merging multiple CSV files using powershell

我一直在尝试使用 PowerShell 将几个 CSV 文件合并为一个文件。我已经使用批处理文件多次执行此操作而没有出现问题,但我无法使用 PowerShell 执行此操作。

这是我使用的代码:

Get-ChildItem C:\Users\kz280\Desktop\Script_Development\Test_Logs\*.csv |
ForEach-Object {Import-Csv $_} | 
Export-Csv -NoTypeInformation C:\Users\kz280\Desktop\Script_Development\Test_Logs\MergedCsvFiles.csv

我还尝试了 4 或 5 个 similar/proven 我在 Stack Overflow 中找到的代码,但都没有成功。我刚开始玩 PowerShell,所以我不确定我是否做错了什么。我已经 created/ran 几个没有问题的脚本。

我收到的错误是脚本无限期运行。除此之外,它只是合并三列。其余 50 列未显示在最终的 CSV 文件中。

如何将所有源文件合并到一个文件中?

我觉得您至少遇到了两个可能的问题之一。 Bill_Stewart 关于您的输出文件也被提取为输入的说法是正确的。您需要在第一个 Get-ChildItem 之后断开管道或选择不同的输出目录。

$files = Get-ChildItem C:\Users\kz280\Desktop\Script_Development\Test_Logs\*.csv 
$files | ForEach-Object {Import-Csv $_} | 
    Export-Csv -NoTypeInformation C:\Users\kz280\Desktop\Script_Development\Test_Logs\MergedCsvFiles.csv

这样输出文件不会作为输入文件处理。

我觉得您要合并的文件结构不完全相同。因此,如果是这种情况,我提供了一种合并文件的简单方法

$files = Get-ChildItem C:\Users\kz280\Desktop\Script_Development\Test_Logs\*.csv 
Get-Content $files | Set-Content C:\Users\kz280\Desktop\Script_Development\Test_Logs\MergedCsvFiles.csv

这是非常粗略的并且会重复专栏。这就是你可能想要的。如果我们走错了路,请用更多详细信息更新您的问题。