![](https://powershell.work/wp-content/themes/cocoon-master/images/b-woman.png)
PowerShellで
・複数のCSVファイルを
・1つのCSVファイルに纏める方法
を紹介します!
![](https://powershell.work/wp-content/themes/cocoon-master/images/b-woman.png)
各CSVファイルに見出し行があっても、
上手いこと1つのCSVファイルに纏める方法です!
コード
ここでは例として
・デスクトップ配下のフォルダ「test」配下にある
・「対象ファイル(今回は全てCSVファイル)」を
・1つのCSVファイルに纏める方法
を紹介します。
![フォルダ「test」配下のCSVファイル(3つ)](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_001.png)
![001.csv](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_002.png)
![002.csv](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_003.png)
![003.csv](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_004.png)
# 対象フォルダ
$targetFolder = "C:\Users\user\Desktop\test"
# 出力ファイルのパス
$outputFile = "C:\Users\user\Desktop\merge.csv"
# 1ファイル目かどうかを判定するためのカウンタ変数
$fileCount = 0
$ws = New-Object -ComObject Wscript.Shell
try
{
# 既に出力ファイルが存在したら削除
if (Test-Path $outputFile) {
Remove-item -Force $outputFile -ErrorAction Stop
}
# 指定フォルダ配下のcsvファイルのリストを取得
$fileList = (Get-ChildItem $targetFolder -Filter *.csv -File -ErrorAction Stop).FullName
# csvファイルの数だけ繰り返し
foreach($file in $fileList){
# カウンタ変数をカウントアップ
$fileCount = $fileCount + 1
# 1ファイル目のみ、(1行目を含め)まるっと出力
# 1ファイル目以外は、1行目を飛ばして1行ずつ出力
if ($fileCount -eq 1) {
Get-Content $file | Out-File -Encoding default $outputFile
} else {
Get-Content $file | Select-Object -Skip 1 | Out-File -Encoding default $outputFile -Append
}
}
$ws.popup("対象ファイルを1ファイルに纏めました。`n対象ファイル数:" + $fileCount)
}
catch
{
$ws.popup("エラー : " + $PSItem)
}
実行結果
複数のCSVファイルを1つのCSVファイルに纏めることができました。
見出し行も上手いことできました。
![実行結果①](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_005.png)
![実行結果②](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_006.png)
![実行結果③](https://powershell.work/wp-content/uploads/2022/11/ps_csv_merge_007.png)
参考①
上記のコードは以下の記事を参考にして作成しました。
●ファイルの存在確認
●ファイルの削除
参考②
上記のコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Get-ChildItem」コマンドレット
●「Get-Content」コマンドレット
●「Out-File」コマンドレット
●「Select-Object」コマンドレット