※この記事は「2021年5月21日」に更新しました。
PowerShell(パワーシェル)講座です。
前回は、オブジェクト操作について紹介しました。
今回は、ファイル入出力についてです。
環境は、Windows 10(64bit)、PowerShell 6.1.2 です。
ファイル出力
コマンドプロンプトだと、リダイレクト処理でテキストファイルに出力することができました。
もちろん、PowerShell(パワーシェル)でも使えたりします。
ipconfig > outfile.txt
こうすると、カレントディレクトリに outfile.txt というファイルが作成されているはずです。
中身を見てみると、ipconfig を実行した結果が記録されています。
これは、コマンドプロンプトのときでもよく使われていました。
ちなみに追記したい場合は下記のようにします。
ipconfig >> outfile.txt
Out-File【PowerShellコマンドレット】
リダイレクト処理と似ているのが、Out-File というコマンドレットです。
変数やコマンドの結果をテキストファイルに出力できます。
ほとんどできることは同じなんですが、細かいことを言うと、-Encoding というパラメータを使えば、ファイル出力エンコードを指定できるところです。
ちなみにデフォルトでは、BOM なし UTF-8 です。
あと -NoClobber という上書き防止策があります。
ちなみに先程のコマンドを実行した後に以下のコマンドを実行してみましょう。
dir > outfile.txt
こうすると、前回のファイル内容が上書きされているはずです。
しかし、Out-File というコマンドレットで -NoClobber というパラメータを指定すれば、上書きできません。
ipconfig | Out-File outfile.txt -Noclobber
エラーメッセージが出るはずです。
ちなみに追記したい場合は -Append パラメータを指定します。
date | Out-File outfile.txt -Append
最後に現在の日時が追記されているはずです。
【番外編】Set-Content と Add-Content
Out-File と似たコマンドレットで Set-Content(Add-Content)があります。
このコマンドレットは、読み込みにロックがかかります。
例えば、Out-File は、書き込んでる最中でも読み込み可能ですが、Set-Content(Add-Content)は読み込みにロックがかかります。
あとデフォルトのファイル出力フォーマットが異なります。
ファイル入力
ファイル入力は、PowerShell では、主に Get-Content というコマンドレットを使います。
それでは見ていきましょう。
Get-Content【PowerShellコマンドレット】
Get-Content と使えば、テキストファイルから平文で文字列を読み込むことができます。
Get-Content -Path ./outfile.txt
最後に
いかがでしょうか。
今回は、ファイル入出力について、解説しました。
久しぶりに PowerShell(パワーシェル)を使いましたが、コマンドプロンプトのときと違って、やはりできることが幅広くなっています。
次回は、外部プログラムを実行する方法を紹介します。
コツコツやっていきましょう。