PowerShellのテキストファイルの書き込みと読み込みのサンプルです。
目次
ファイルを読み込む(Get-Content)
変数 = Get-Content ファイルパス [-Raw] |
- ファイルの文字を読み込み配列を取得します。1行が1要素になります。
- 引数の-Rawをつけると文字列を取得します。
ファイルを読み込み配列にする
$arr = Get-Content "d:\test1\test1.txt"
foreach ($str in $arr) {
Write-Host $str
}
4行目は、改行ごとに出力されます。
ファイルを読み込み文字列にする
$str = Get-Content "d:\test1\test1.txt" -Raw
Write-Host $str
3行目は、改行の箇所は改行で出力されます。
新規でファイルに書き込む(Set-Content)
Set-Content [-Path] ファイルパス [-Value] 文字列 [-Encoding 文字コード] |
- ファイルに文字を書き込みます。
- ファイルが存在しない場合は、新規でファイルが作成されます。
- 文字コードの指定をしない場合は、Shift-JISになります。
ファイルに書き込む(Shift-JIS)
Set-Content -Path "d:\test1\test2.txt" "あいうえお`r`nかきくけこ"
Encodingの指定がない場合はShift-JISになります。`r`nは改行になります。
ファイルに書き込む(UTF8のBOM付き)
Set-Content -Path "d:\test1\test2.txt" "あいうえお" -Encoding UTF8
上記は文字コードにUTF8を指定しています。文字コードはUTF8のBOM付きになります。
ファイルに書き込む(UTF-16LE)
"あいうえお`r`nかきくけこ" > "d:\test1\test2.txt"
上記の書き方の場合、文字コードはUTF-16LEになります。
ファイルに書き込む(UTF8のBOM無し)
$str = "あいうえお`r`nかきくけこ"
$utf8NoBom = New-Object System.Text.UTF8Encoding $false
[System.IO.File]::WriteAllLines("d:\test1\test2.txt", $str, $utf8NoBom)
3行目は、UTF8Encodingオブジェクトのコンストラクタの引数にfalseを指定することでBom無しにしています。
文字列の改行で`r`n以外の方法
$newLine = [System.Environment]::NewLine
Set-Content -Path "d:\test1\test2.txt" ("AB" + $newLine + "CD")
[System.Environment]::NewLineは改行になります。
追記でファイルに書き込む(Add-Content)
Add-Content [-Path] ファイルパス [-Value] 文字列 |
- ファイルに文字を追記ます。
ファイルに書き込むサンプル
Add-Content -Path "d:\test1\test2.txt" "あいうえお"
追記分は、改行されて追記されます。
以下の書き方でも追記になりますが、文字コードはUTF-16LEになります。
"あいうえお" >> "d:\test1\test2.txt"
関連の記事