簡體   English   中英

使用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個我在Stack Overflow中發現的類似/經過驗證的代碼,但均未成功。 我剛開始使用PowerShell,所以不確定是否做錯了什么。 我已經創建/運行了更多沒有問題的腳本。

我收到的錯誤是腳本無限期運行。 除此之外,它僅合並三列。 最后的CSV文件中未顯示其余50列。

如何將所有源文件合並為一個文件?

我覺得您至少有兩個可能的問題之一。 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

這是非常粗略的,將重復列。 這是您可能想要的。 如果我們走錯了路,請用更多詳細信息更新您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM