あるフォルダ配下に、複数のフォルダが存在し、

そのフォルダの中に同じファイル名のCSVが複数存在するとする。

それらのCSVファイルを最初のファイルのヘッダ以外は無視して

結合を行うスクリプトを作った。

【18/03/27追記】 Zuishin様にもっとスマートな方法を教えていただきました。
コメント欄を参照ください。ありがとうございます。

function margeCsv($inputFolder, $outputFolder, $fileName) {
    $headerOutputflg = 1
    Get-ChildItem $inputFolder -include $fileName -Recurse | ForEach-Object {
        $_.FullName
        $headerflg = 1
        Get-Content $_.FullName | ForEach-Object {
            $row = $_

            if ($headerflg -ne 1 -or $headerOutputflg -eq 1){
                $row | Out-File ($outputFolder + "\" + $fileName) -Append
            }
            $headerflg = 0
        }
    $headerOutputflg = 0
    }
}

margeCsv([入力フォルダパス])([出力フォルダパス])([ファイル名])

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.