質問: **Windows のコマンドプロンプトで、画面出力した上で、テキスト形式でログ出力したいのですが、どうすれば良いでしょうか?** --- **例えば、chkdsk** ・時間がかかる上に、進行状況に応じてメッセージが追加されていきます ・ログは最後にまとめて出力すれば良いのですが、途中で、誤ってコマンドプロンプトを閉じた時、ログを確認する方法はあるでしょうか? ・コマンドプロンプトを一旦閉じてしまったら、処理の履歴を確認することは出来ない? --- **今、下記を試しているのですが、どういう意味ですか?** ・画面には何も表示されていないのですが、処理が全部終了してから「出力する」という意味でしょうか? ・進行状況に応じてメッセージが追加されていったりはしない?? > > コマンド > ファイル名 > > >
回答: Windowsに標準搭載されているPowerShellをつかって、コマンドプロンプトから以下を実行すればいいと思います。 ``` powershell -Command "<コマンド> 2>&1 | Add-Content -Path <ファイル名> -PassThru" ``` なお、 > > 今、下記を試しているのですが、どういう意味ですか? > > > についてですが、`>`は、コマンドの標準出力(i.e. エラー以外の画面出力)をファイルに書きこむ、リダイレクトと呼ばれるものです。これをした場合、画面には出力されません。ファイルには進行状況に応じて出力が追加されます。 私の上記コマンドの`2>&1`はコマンドの標準出力にエラー出力をまとめるものです。それをさらに`|`(パイプ)によってPowerShellコマンドレットのAdd-Contentに渡して処理させています。