「PowerShellでファイルを新規作成して書き込んだり、上書き保存したり、追記して保存したいんだけど、どんなプログラムコードを書けばいいのかわからない…。」とPowerShellのファイル出力について悩んでいる方向け。
PowerShellのファイル出力、とりあえずこれだけ覚えればOKという、簡単なソースコードを教えます。
スポンサーリンク
本記事は下記の2本立てです。
本記事の内容
- PowerShellのファイル出力はこれだけ覚えればOK【上書き・追記】
- ファイルに複数行出力したい場合のPowerShellのソースコード
PowerShellのファイル出力はこれだけ覚えればOK【上書き・追記】
PowerShellでファイル出力を行うコードの書き方はいろいろありますが、今回お伝えするのは単純明快わかりやすい書き方です。
これ一つ覚えてしまえば、ファイルの新規作成、上書き保存、追記保存もできてしまいます。
そのコードとは『Out-File』です。
ファイルの上書き保存
Write-Output "今度の韓国一人旅はロケ地巡りしたい。" | Out-File "D:\program\test1.txt"
上記ソースコードをそのままコピーしてPowerShellで実行すると、ドライブDのprogramingフォルダにあるtest1.txtファイルに『今度の韓国一人旅はロケ地巡りしたい。』と出力されます。
もし、test1.txtファイルが存在しない場合は、新規作成してファイル出力してくれます。
ちなみにドライブDにprogramingフォルダがない場合は、パスが間違っているということでエラーになります。
ファイルの追記保存
Write-Output "今度の韓国一人旅はロケ地巡りしたい。" | Out-File -Append "D:\programing\test2.txt"
『Out-File』の後に『-Append』を追加しただけで、他はファイルの上書き保存のコードを全く同じ。
これで、ファイルに追記保存が可能です。
もし、test2.txtファイルが存在しない場合には、新規作成してファイル出力してくれます。
スポンサーリンク
ファイルに複数行出力したい場合のPowerShellのソースコード
先ほどお伝えしたのは、ファイルを開いて1行だけ出力するというソースコード。
複数行出力の場合は、先ほどのコードを必要分記述してもいいですが、こんな書き方もありますよということで、ちょっと別のソースコードをご紹介しますね。
こちらがサンプルコードです。
$textfile = "D:\programing\test3.txt"
$file = New-Object System.IO.StreamWriter($textfile, $true, [System.Text.Encoding]::GetEncoding("UTF-8"))
$file.WriteLine("ダッカルビ")
$file.WriteLine("明洞")
$file.WriteLine("食べ歩き")
Write-Host("")
$file.Close()
ざっくり解説すると、
- ファイル書き込み用のストリームを開く:New-Object System.IO.StreamWriter()
- ファイルに出力する:$file.WriteLine()
- ファイルを閉じる:$file.Close()
1のストリームの3つの引数について解説します。
New-Object System.IO.StreamWriter(引数1,引数2,引数3)
引数1:ファイルのフルパス
書き込むファイルの場所をフルパスで指定します。
ここで指定したファイルが存在しなければ、新規作成して保存してくれます。
引数2:上書きか追記かを指定
ここでファイルの上書き保存か追記保存かを指定できます。
指定の仕方は下記の通りです。
- ファイルの上書き保存:$false
- ファイルの追記保存:$true
引数3:エンコードの指定
エンコードというのは文字コードのことですね。
ここを適切に指定しないと、日本語文字出録の場合、文字化けしてしまいます。
よく使われるのが、『Shift_JIS(sjis)』か『UTF-8』です。
世界の標準コード規格が『UTF-8』なので、迷ったら『UTF-8』を指定するのがいいかなと思います。
まとめ
それでは今回の記事のまとめです。
PowerShellのファイル出力
Write-Output “出力する文字列” | Out-File -Append “ファイルのフルパス”
- -Appendを削除:ファイルの上書き保存
- -Append:ファイルの追記保存
複数行のファイル出力
- ファイル書き込み用のストリームを開く:New-Object System.IO.StreamWriter()
- ファイルに出力する:$file.WriteLine()
- ファイルを閉じる:$file.Close()
New-Object System.IO.StreamWriter(引数1,引数2,引数3)
- 引数1:ファイルのフルパス
- 引数2:$false(上書き保存)、$true(追記保存)
- 引数3:エンコード指定
今回の記事が役に立ちましたら幸いです^^
ではでは~ノシ
スポンサーリンク