问题
我使用 GUI 应用程序将调试输出写入命令窗口(仅在那里,没有其他日志)。当应用程序崩溃时,命令窗口与所有输出一起消失。
问题
如何在文本文件中捕获命令窗口的输出?
我尝试过的方法
由于我找不到与命令窗口交互的方法,我只能使用屏幕录制。但这并不理想,因为我无法轻松选择或复制文本。
答案1
由于除了prog.exe > file.txt
最后一个输出之外的所有输出都有效,我们现在知道 GUI 程序使用可以在适当条件下捕获的标准输出。
您需要使用名为
Tee 对象
其别名为tee
(符合 Linux 精神)。此命令既输出到文件,也将其传递到标准输出。
要使用的 PowerShell 命令可能如下所示:
Start-Process -FilePath "\path\prog.exe" | tee -filepath \path\file.txt
这会将输出发送\path\file.txt
到控制台。
答案2
也许有一种方法可以以某种方式从 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
关键字。
您甚至可以通过变量切换脚本:
F12::
stopit = 0
While stopit = 0
{
Loop, 70
{
Click
if stopit = 1
{
exit
}
}
Sleep, 2000
}
return
F10::
stopit = 1
return
来源-用户: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 复制粘贴。我无法为您提供完整的示例/脚本,因为我不知道这是什么应用程序,我无法测试脚本等。所以在这种情况下我能提供的帮助就这么多了。