2016-05-10 16 views
0

ローカルフォルダ内のすべてのcsvファイルを結合したいのですが、空の結果が表示されます。私は、最初のファイルのヘッダーを取って、フォルダ内のファイルの残りのすべてのヘッダーをスキップし、それらに参加しようとしています。powershellを使用してすべてのcsvファイルを結合できません

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 
    } 

私の最終結果は、finalCSV.csvを開くと結果が表示されません。

+0

'$ lines = $ lines = ...'?しかし、それは問題ではありません。 –

+1

この[リンク](http://techibee.com/powershell/merging-multiple-csv-files-into-one-using-powershell/2382)を参照してください。 –

答えて

0

私は、あなたの解決策がうまくいっていると思います。 Import-Csvを使用して配列に追加するだけです。このようなもの:

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

列が異なる順序であっても機能します。

関連する問題