PowerShell: テキストファイルを一括で読み込んで変数に格納

PowerShellでテキストファイルを読み込む場合、 Get-Contentコマンドレットを使います。 Get-Contentで取得した値を変数に格納すると、 デフォルトでは文字列配列に1行ずつ格納されます。 これを文字列として一括で取得するには -RAWオプション(スイッチパラメータ)を付けます。

書式
Get-Content ファイルパス -RAW [-Encoding 文字コード]

文字コードを指定する場合は-Encodingパラメータで指定します。

例として次のような3行(改行を含めて12文字)のファイル「test.txt」 の内容を取得してみます。

test.txt
1行目
2行目
3行目

次のコードはファイル「test.txt」の内容を一括で取得して 変数$contentsに格納しています。

$contents = Get-Content test.txt -RAW

# 型
$contents.GetType().Name  # String

# 文字数
$contents.Length          # 12

GetType()で型名を取得するとStringと表示されるので 文字列型となっています。 文字数は4文字×3行で12です。文字数には改行コード(LF)も含まれています。
このように-RAWオプションを付加するだけで 一括でファイルの内容を取得できます。

-RAWオプションを付けずにデフォルトの状態で Get-Contentコマンドレットを実行した結果も紹介します。 この場合は1行ずつ文字列配列として格納されます。

$contents = Get-Content .\test.txt

$contents.GetType()  # System.Array

$contents.Length     # 3

GetType()の結果はSystem.Array(配列)となっています。 Lengthプロパティの値は3で、 ファイルの行数と一致しています。

PowerShell
PR