スポンサーリンク

【PowerShell】同一レイアウトのテキストファイルのマージ

記事内に広告が含まれています。

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を通じて実行されることを想定しています。

スポンサーリンク
Windows
著者SNS
タイトルとURLをコピーしました