WindowsのコマンドプロンプトやPowerShellでコマンドを実行した場合、通常、コマンドの実行結果やエラーは画面上に表示されます。
ですが、バッチファイルやスクリプトファイルとしてコマンドを実行するようなケースでは、コマンドの実行結果やエラーをファイルに出力して記録しておきたいときがあります。
そこでここでは、WindowsコマンドやPowerShellの実行結果やエラーをファイルに出力する方法を紹介します。
目次
リダイレクトを使った方法
WindowsコマンドやPowerShellの実行結果やエラーをファイルに出力する最も一般的な方法は、リダイレクトを使った方法です。
たとえば、systeminfoコマンドをそのまま実行すると、以下の画像のようにさまざまな情報が画面に出力され、そのままでは内容を確認しづらいですが、リダイレクトを使ってコマンドの実行結果をテキストファイルに出力すれば、後から内容を確認したり検索しやすくなります。
たとえば、以下のコマンドでは、systeminfoコマンドの実行結果を「D:\result.txt」に出力しています。
C:\> systeminfo > D:\result.txt
リダイレクトでファイルに出力する方法としては、次のような種類があります。
コマンド | 説明 |
---|---|
コマンド > ファイル | コマンドの実行結果をファイルに出力する |
コマンド >> ファイル | コマンドの実行結果をファイルに追記する |
コマンド 2> ファイル | コマンドのエラーをファイルに出力する |
コマンド 2>> ファイル | コマンドのエラーをファイルに追記する |
コマンド > ファイル 2>&1 | コマンドの実行結果とエラーをファイルに出力する |
コマンド >> ファイル 2>&1 | コマンドの実行結果とエラーをファイルに追記する |
なお、Windowsコマンドの実行結果をリダイレクトでファイルに出力する場合は、実行するコマンドによって、文字コードが「ANSI(Shift_JIS)」で出力される場合と「UTF-16 LE」で出力される場合があるので注意が必要です。
Out-Fileコマンドレット使った方法
PowerShellでは、リダイレクト使った方法に加えて、Out-Fileコマンドレット使ってコマンドの実行結果をファイルに出力することができます。
たとえば、以下のコマンドでは、ipconfigコマンドの実行結果を「D:\result.txt」に出力しています。
PS C:\> ipconfig | Out-File -FilePath D:\result.txt
なお、Out-Fileコマンドレットで出力されるテキストファイルの文字コードは、デフォルトでは「UTF-16 LE」ですが、「ANSI(Shift_JIS)」で出力したいときは、以下のように実行します。
PS C:\> ipconfig | Out-File -FilePath D:\result.txt -Encoding default
あとがき
WindowsコマンドやPowerShellコマンドレットを、バッチファイルやスクリプトファイルで実行する場合は、実行結果をファイルに出力することで、正常に実行されたかなどを確認する際に便利です。