テキストファイルを結合する

複数のテキストファイルを、ひとつのファイルに結合する方法を紹介します。コマンドは Get-Content でファイルの内容を取り出して、パイプで Set-Content に流します。ファイルの新規作成または上書きは Set-Content を使います。内容の追加は Add-Content を使います。

Get-Content コマンドに複数のファイル名をベタ書きする場合

$content0 = "This is content 0."
$content1 = "This is content 1."
$content2 = "This is content 2."
$content3 = "This is content 3."

$fnm0 = "test0.txt"
$fnm1 = "test1.txt"
$fnm2 = "test2.txt"
$fnm3 = "test3.txt"

$fnm_total = "test0123.txt"

# 複数のファイルを作成する.
Write-Output( $content0 ) > $fnm0
Write-Output( $content1 ) > $fnm1
Write-Output( $content2 ) > $fnm2
Write-Output( $content3 ) > $fnm3

# 新しくファイルを作成するとき.
Get-Content $fnm0, $fnm1, $fnm2, $fnm3 | Set-Content $fnm_total

# 既存のファイルに追加するとき.
# Get-Content $fnm0, $fnm1, $fnm2, $fnm3 | Add-Content $fnm_total

下記が実行結果で、作成されたファイルです。それぞれの内容は改行を付加して結合されます。したがってファイルの末尾は改行で終わります。Windows10 で実行したところ、改行コードは CR + LF でした。

This is content 0.
This is content 1.
This is content 2.
This is content 3.

Get-Content コマンドにファイル名の配列を指定する場合

$content0 = "This is content 000."
$content1 = "This is content 111."
$content2 = "This is content 222."
$content3 = "This is content 333."

$fnm0 = "test0.txt"
$fnm1 = "test1.txt"
$fnm2 = "test2.txt"
$fnm3 = "test3.txt"

$fnm_total_by_arr = "test0123_by_arr.txt"

# 複数のファイルを作成する.
Write-Output( $content0 ) > $fnm0
Write-Output( $content1 ) > $fnm1
Write-Output( $content2 ) > $fnm2
Write-Output( $content3 ) > $fnm3

# カレントディレクトリのテキストファイルを名前でソートして配列に格納する.
$arr_fnm = Get-ChildItem "*.txt" | Sort-Object { $_.Name }

# 新しくファイルを作成するとき ( 結合するファイル名を配列で指定する ).
Get-Content $arr_fnm | Set-Content $fnm_total_by_arr

# 既存のファイルに追加するとき ( 結合するファイル名を配列で指定する ).
# Get-Content $fnm0, $fnm1, $fnm2, $fnm3 | Add-Content $fnm_total_by_arr

下記が実行結果で、作成されたファイルです。上記のテキストファイルと同じような内容になります。

This is content 000.
This is content 111.
This is content 222.
This is content 333.

改行させたくない場合は、Set-Content に -NoNewline オプションを指定します。

Get-Content $arr_fnm | Set-Content $fnm_total_by_arr -NoNewLine

この場合は下記のようなファイルが出来上がります。

This is content 000.This is content 111.This is content 222.This is content 333.