私はWindowsでCプログラムを書いていて、printfはprintをコマンドラインに呼び出します。次のコマンドを使用して、このすべての出力をテキストファイルにリダイレクトできます。
myProgram.exe > mylog.txt
ただし、コンソールに出力されたはずの出力を確認し、すべてをテキストファイルに記録したいと思います。
これを行う方法はありますか?ログファイルを監視するために、tailを使用することを考えていました。
Windows PowerShell にはそれを実行できるツールがあり、同じことを行うUNIXツールにちなんで tee
という名前が付けられています。
あるいは、Windows用のUNIX tee
のポートがあります。
Windowsで私が考えることができるすべてはこれを行うことです:
myProgram.exe > mylog.txt & type mylog.txt
これは、質問のコマンド例に基づいています。実際にmylog.txt
に出力を追加したい場合は、>>
ではなく>
を使用しますが、type
は、追加されたものだけでなく、ログファイル全体を出力します。
GnuWin32 CoreUtils をダウンロードすると、Unixメソッド(tee
コマンド)を使用してこれを実行できます。
myProgram.exe | tee mylog.txt
これにより、myProgram.exeの出力がmylog.txt
に書き込まれますが、同時にコンソールにも表示されます。 mylog.txt
に追加するだけの場合は、-a
パラメータをteeに渡すことができます。
私は Visual Studio Code を使用し、そこからログファイルを開きます。ログファイルが変更されると、ビューをほぼリアルタイムで最新の状態に保ちます
OPが彼らに次のような可能性を示唆しているので、私は同様のニーズがあり、Tailを使用しました:
>C:\Temp\Commands_Log.txt (
START tail.exe -f C:\Temp\Commands_Log.txt
Some_Commands
Other_Commands
echo.
echo ALL DONE HERE!
echo.
echo IT IS NOW SAFE TO CLOSE THIS WINDOW!
)
"> C:\ Temp\Commands_Log.txt"はログファイルを作成し、(括弧)内にあるすべてのコマンドからの出力を追加します。
括弧内の最初のコマンドは、新しいコマンドウィンドウで開くTailを開始することです。
最後のエコーは、慣れていないユーザーがすべてが完了したときに通知するためのものです。