PowerShellでShift-JISのCSVファイルを連結した話。

powershell コンピュータ
powershell

月ごとに作成された文字コードがShift_JISのCSVファイルがあり、これを3年分結合させる作業を行いました。

依頼された内容はもう少し複雑で手作業で行うにはかなり煩雑です。正確性とスピードを考えるとコンピュータの出番となります。

手元に使える道具はWindows10がインストールされたラップトップパソコン。Windows10であればPowerShell5.1が使えます。

PowerShellにはImport-CSVやExport-CSVがありますが、今回は結合だけですのでShift-JISのテキストファイルとして考えます。

CSVファイルは1行目が項目名がセットされたヘッダーになっており、まず36個(36カ月)のファイルのヘッダーが同一か確認します。

ファイルを読み込み1行目を取得

$rows = Get-Content 入力ファイル名 -Encoding oem
$rows[0]

Encodingでoemを選ぶとShift_JISファイルが読み込めました。
Get-Contentでファイルを読み込むと各行が文字列の配列として取得出来ますので、$rows[0]で1行目を取得します。

ヘッダーが同じファイル同士であれば結合することができるので、ヘッダーが異なると出力先のファイル名を変更するようにプログラムを組みます。

あとは2行目から最終行までを出力先のファイルに追加します。


for($i=1; $i -lt $data.Length; $i++)
{
    Add-Content -Path 出力ファイル名 -Value $rows[$i] -Encoding oem
}

Add-Contentを使うと1行ごとファイルに追記されます。

後は36回繰り返すだけで、終わってみると難しくは無いのですが結構時間が掛かりました。

コメント