PowerShellを使用して、同一レイアウトのテキストファイル(CSVやTSVなど)をマージするスクリプトを書くことができます。
以下のスクリプトは、指定したディレクトリ内のすべてのCSVファイルを一つのCSVファイルにマージします。同様の方法でTSVファイルにも対応できますが、区切り文字をタブに変更する必要があります。
# 入力ディレクトリと出力ファイルの相対パスを設定
$inputDir = ".\Input" # スクリプトファイルと同じディレクトリ内の 'Input' フォルダ
$outputFile = ".\merged.csv" # 出力ファイルをスクリプトファイルと同じディレクトリに保存
# 現在のスクリプトのディレクトリを取得
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
# 入力ディレクトリのフルパスを解決
$fullInputDir = Join-Path -Path $scriptDir -ChildPath $inputDir
# 出力ファイルのフルパスを解決
$fullOutputFile = Join-Path -Path $scriptDir -ChildPath $outputFile
# 入力ディレクトリからCSVファイルのリストを取得
$csvFiles = Get-ChildItem -Path $fullInputDir -Filter *.csv
# 最初のファイルを読み込んでヘッダーを取得し、出力ファイルに書き込む
$firstFile = $true
foreach ($file in $csvFiles) {
if ($firstFile) {
# ヘッダーを含む最初のファイルの内容を出力ファイルにコピー
Get-Content $file.FullName | Out-File $fullOutputFile
$firstFile = $false
} else {
# ヘッダーをスキップして内容を出力ファイルに追加
Get-Content $file.FullName | Select-Object -Skip 1 | Out-File $fullOutputFile -Append
}
}
このスクリプトは、スクリプトファイルと同じディレクトリにある Input
フォルダ内のCSVファイルをマージし、結果を merged.csv
という名前のファイルとして同じディレクトリに保存します。
Input
フォルダ存在しない場合は、事前に作成し、マージ対象ファイルを格納してください。
また、このスクリプトはPowerShellスクリプトファイル(.ps1)として保存され、PowerShellを通じて実行されることを想定しています。