问题

问题

问题

我使用 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) 使脚本定期运行。请参阅loopsleep关键字。
您甚至可以通过变量切换脚本:

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 复制粘贴。我无法为您提供完整的示例/脚本,因为我不知道这是什么应用程序,我无法测试脚本等。所以在这种情况下我能提供的帮助就这么多了。

相关内容