我正在 Windows 中编写一个 C 程序,我的 printf 调用打印到命令行,并且我知道我可以使用以下方法将所有这些输出重定向到文本文件:
myProgram.exe > mylog.txt
但是,我还希望看到打印到控制台的输出并将其全部记录在文本文件中。
有办法吗?我正在考虑使用 tail 来监视日志文件。
答案1
窗户电源外壳有一个可以做到这一点的工具,名为tee
在执行相同操作的 unix 工具之后。
另外,还有适用于 Windows 的 Unix 移植版tee
:
- 适用于 Win32 的 GNU 实用程序(最后更新于 2003 年)
- Windows 版 CoreUtils(最后更新于 2005 年)
答案2
在 Windows 下我能想到的就是这样做:
myProgram.exe > mylog.txt & type mylog.txt
这是基于您问题中的命令示例 - 如果您实际上想要将输出附加到,mylog.txt
那么您需要使用>>
而不是>
,但type
会打印出整个日志文件,而不仅仅是附加的内容。
如果你下载GnuWin32 核心实用程序,您可以使用 Unix 方法(tee
命令)来执行此操作:
myProgram.exe | tee mylog.txt
这会将 myProgram.exe 的输出写入,mylog.txt
同时还会将其显示到控制台。如果您只想附加到,mylog.txt
则可以将-a
参数传递给 tee。
答案3
我用Visual Studio 代码并从那里打开日志文件,它会随着日志文件的变化而实时地更新视图
答案4
我刚好有类似的需求,并且按照 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,它将在一个新的命令窗口中打开。
最后的回声是为了让不熟悉的用户知道一切何时完成。