web-dev-qa-db-ja.com

Windows:出力を見ながらテキストファイルへのコマンドラインリダイレクト

私はWindowsでCプログラムを書いていて、printfはprintをコマンドラインに呼び出します。次のコマンドを使用して、このすべての出力をテキストファイルにリダイレクトできます。

myProgram.exe > mylog.txt

ただし、コンソールに出力されたはずの出力を確認し、すべてをテキストファイルに記録したいと思います。

これを行う方法はありますか?ログファイルを監視するために、tailを使用することを考えていました。

32
user79397

Windows PowerShell にはそれを実行できるツールがあり、同じことを行うUNIXツールにちなんで tee という名前が付けられています。

あるいは、Windows用のUNIX teeのポートがあります。

21
lesmana

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に渡すことができます。

8
Gaff

私は Visual Studio Code を使用し、そこからログファイルを開きます。ログファイルが変更されると、ビューをほぼリアルタイムで最新の状態に保ちます

0
Jaime Botero

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を開始することです。

最後のエコーは、慣れていないユーザーがすべてが完了したときに通知するためのものです。

0
DBADon