问题
我使用一个将调试输出写入命令窗口的 GUI 应用程序(只有那里,没有其他日志)。当应用程序崩溃时,命令窗口连同所有输出一起消失。
问题
如何在文本文件中捕获命令窗口的输出?
我试过的
由于我发现无法与命令窗口进行交互,因此我求助于屏幕录制。这远非理想,因为我无法轻松选择或复制文本。
我使用一个将调试输出写入命令窗口的 GUI 应用程序(只有那里,没有其他日志)。当应用程序崩溃时,命令窗口连同所有输出一起消失。
如何在文本文件中捕获命令窗口的输出?
由于我发现无法与命令窗口进行交互,因此我求助于屏幕录制。这远非理想,因为我无法轻松选择或复制文本。
由于
prog.exe > file.txt
对除最后一个输出之外的所有输出都有效,我们现在知道 GUI 程序使用可以在正确条件下捕获的标准输出。您将需要将 PowerShell 与称为 Tee-Object的 cmdlet 一起使用, 其别名是
tee
(本着 Linux 的精神)。此命令既输出到文件,也将其传递到标准输出。要使用的 PowerShell 命令可能如下所示:
这会将输出发送
\path\file.txt
到控制台以及控制台。也许有一种方法可以以某种方式从 cmd 窗口“获取”数据。比如从记忆中读出来什么的。但我从未见过这样的方法。我会简单地使用 AutoHotkey。
示例:https ://autohotkey.com/board/topic/9953-how-to-capture-intire-cmdexe-text/
1)按标题查找cmd窗口。AutoHotkey 有一个名为“Window Spy”的工具。https://amourspirit.github.io/AutoHotkey-Snippit/WindowSpy.html使用此工具获取标题/窗口详细信息,以便您以后“查找”它。
2)您基本上只需要捕获当前输出的序列。如:
Alt+Space;E;S;
#标记一切Alt+Space;E;Y;
#复制2)使脚本定期运行。查看
loop
和sleep
关键字。您甚至可以通过变量切换脚本:
来源 - 用户:left1000,通过:https ://autohotkey.com/board/topic/54-loop-until-key-is-pressed/
3) 只需将您抓取的内容写入文本文件即可。https://www.autohotkey.com/docs/commands/FileAppend.htm
我相信这可以在大约 5-15 分钟内从 Autohotkey 文档和 Google 复制粘贴在一起。我无法为您提供完整的示例/脚本,因为我不知道这是什么应用程序,我无法测试脚本等。所以在这种情况下,我可以提供尽可能多的帮助。