powershell - 使用 powershell 合并多个 CSV 文件

标签 powershell csv powershell-4.0

我一直在尝试使用 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

我还尝试了在 Stack Overflow 中找到的 4 或 5 个类似/经过验证的代码,但均未成功。我刚开始玩 PowerShell,所以我不确定我是否做错了什么。我已经创建/运行了几个没有问题的脚本。

我收到的错误是脚本无限期运行。除此之外,它只是合并三列。其余 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

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

关于powershell - 使用 powershell 合并多个 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610665/

相关文章:

powershell - IE 浏览器 - Powershell 脚本,用于将站点添加到受信任站点列表、禁用保护模式并降低所有区域的安全级别

ruby - 如何在 Ruby 中将字符串转换为散列?

php - 上传时看不到 .csv 文件

Python:csv.Dictreader 列上的额外逗号

powershell - 为什么我无法从 PowerShell.Streams.Error.add_DataAdded 写入错误?

powershell - 为什么在 PowerShell 中的 for 循环中省略变量会导致无限循环?

powershell - Linux 上的 PowerShell 配置文件位置是什么?

powershell - 如何处理Powershell高级功能ErrorAction参数?

powershell - 尝试创建Powershell用户创建脚本,要在用户名后添加数字(如果已存在)

azure - SB 队列的 PowerShell New-AzureSBAuthorizationRule 返回“对象未设置为对象的实例”