2016-05-10 14 views
0

kombinieren Ich möchte alle CSV-Dateien in meinem lokalen Ordner kombinieren, aber es zeigt leere Ergebnisse. Ich versuche, den Header der ersten Datei zu übernehmen und alle Header im Rest der Dateien im Ordner zu überspringen und ihnen beizutreten.Kann nicht alle csv-Dateien mit Powershell

get-childItem "C:\Users\*.csv" | foreach {[System.IO.File]::AppendAllText 
("C:\Users\finalCSV.csv", [System.IO.File]::ReadAllText($_.FullName))} 

$getFirstLine = $true 

get-childItem "C:\Users\*.csv" | foreach { 
    $filePath = $_ 

    $lines = $lines = Get-Content $filePath 
    $linesToWrite = switch($getFirstLine) { 
      $true {$lines} 
      $false {$lines | Select -Skip 1} 

    } 

    $getFirstLine = $false 
    Add-Content "C:\Users\finalCSV.csv" $linesToWrite 
    } 

Mein Endergebnis ist, dass, wenn ich finalCSV.csv öffnen es keine Ergebnisse zeigt.

+0

'$ Zeilen = $ Zeilen = ...'? Aber das sollte nicht das Problem sein. –

+1

Werfen Sie einen Blick auf diese [link] (http://techibee.com/powershell/merging-multiple-csv-files-into-one-using-powershell/2382). –

Antwort

0

Ich denke, Sie versuchen, Ihre Lösung zu überarbeiten. Verwenden Sie einfach Import-Csv und hängen Sie an ein Array an. So etwas wie dieses:

$a = @(); ls *.csv | % {$a += (Import-Csv $_.FullName)}; $a 

Funktioniert auch, wenn die Spalten in einer anderen Reihenfolge sind.

Verwandte Themen