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


30

私はWindowsでCプログラムを書いています、私のprintfはコマンドラインにprintを呼び出します。

myProgram.exe > mylog.txt

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

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


私が時々したことは、別のcmdプロンプトウィンドウを開いて、タイプmylog.txtを繰り返し実行し(またはメモ帳mylog.txtを実行できます)、それがどのように展開するかを確認することです。Tシャツは素晴らしいもののように見えます。
-barlop


回答:


19

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

または、teeWindows用のUNIXのポートがあります。


3
powershellは素晴らしいヒントです。cmdは、まだ引っ越していない人向けです。gnuwin32を使用するほうがunxutilsを使用するよりも優れており、unxutilsはかなり古いものです。gnuwin32はより新しく、おそらくunxutilsにもすべてが含まれており、さらに多くのユーティリティがあります。他の場所で述べたように、gnuwin32 coreutilsはティーを持っています
barlop

同じことは、別のサードパーティのコマンドラインユーティリティであるCMDerでも機能します。
ラウニ

1
この回答で、superuser.com / a / 273112/213743 BaconBits は、PowerShell ティーが行指向であることを指摘しています。「行末文字に達するまで」改行文字が検出されると、行を出力しません。BaconBitsは、unix teeが常にコンテンツを直ちに転送することを提案しています。
buzz3791

8

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


2
teeソリューションの方がはるかに優れています。あなたが言及する他のことは同時ではありません。
-barlop

1
@barlop-同意します。最初の解決策は、Windowsでネイティブに実行できないため、少しの回避策です。teeはここでうまくやってくれます:)
ガフ

助けてくれてありがとう、ティーと一緒に行くが、レスマナがティーについて言及した数分前になった:)
user79397

「タイプ」を省略した場合、タスクが完了すると、デフォルトのエディター(メモ帳)でファイルが開きます。
ジョシュスト


0

私は同様のニーズがあり、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を起動することです。

最後のエコーは、なじみのないユーザーがすべてが完了したことを知らせるためのものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.