我一直在尝试使用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文件中。
如何将所有源文件合并到一个文件中?
答案 0 :(得分:0)
我觉得你至少有两个可能的问题之一。 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
这是非常原油并将重复列。这是你可能想要的。如果我们走错了路,请更新您的问题。