【发布时间】:2009-04-15 12:34:21
【问题描述】:
我有一个调用我的 IDE 的批处理文件,所以我只想知道我们是否可以将我的 IDE 中存在的内容(全部内容)提取到一些文本文件中。
我的批处理文件写在下面
D:\WindRiver\wrenv.exe -p vxworks653-2.2.3 run
PAUSE
是否需要向我现有的批处理文件添加更多代码?
【问题讨论】:
标签: windows batch-file dos
我有一个调用我的 IDE 的批处理文件,所以我只想知道我们是否可以将我的 IDE 中存在的内容(全部内容)提取到一些文本文件中。
我的批处理文件写在下面
D:\WindRiver\wrenv.exe -p vxworks653-2.2.3 run
PAUSE
是否需要向我现有的批处理文件添加更多代码?
【问题讨论】:
标签: windows batch-file dos
我不确定您对“提取我的 IDE 中的内容”有何看法,但一般来说,这类问题可以使用自动化工具解决。此类工具可以从窗口名称、按钮标题、文本内容中获取 Windows 环境中的任何内容……您可能需要从 3thd 方应用程序中获取的所有内容(甚至是 gui 元素的图片)
我建议你看看AutoHotKey,大约 200KB 的 Windows 自动化脚本语言。
一般来说,您不能批量执行此操作。
在 AutoHotKey 中获取窗口的内容可以很简单:
WinGetText, text, "name of the window"
FileAppend, %text%, c:\out.txt
它可能会变得更复杂一些,但是您可能想要的任何东西都不会涉及超过 10 行的 AHK 脚本。
这是最好的方法,因为它不依赖于给定程序的特性,所以一旦你学习了AHK,你可以以统一的方式从系统中获取任何信息。
请记住,某些应用程序使用非标准 Windows 组件,并且它们可能无法自动化(但这很少见)。
在社区论坛上有很多有用的函数和库,基本上你可能需要任何东西来获取信息 - 将标准输入 / 输出重定向到你的文件,COM Accesibilty 模块(在 Windows 中自动化的系统方法),甚至一些 ocr 包装器来扫描图像上的信息。
【讨论】:
抱歉,回复晚了。这是实际的 IDE(D:\WindRiver\wrev.exe -p vxworks653-2.2.3),当我将它放在命令提示符中时,我的 IDE 被调用。请回复我更多澄清
谢谢 史蒂芬
【讨论】:
>>> 嗨,我刚刚尝试使用 AutoHotKey....
不,不正确。
只有在我安装了我没有的 WindRiver 时才能生成正确的代码。 好的,让我简单解释一下。
首先假设 IDE 的标题以“WindRiver”字样开头。 WindRiver 必须在其控件层次结构中的某些标准窗口控件中保存文本。有问题的控件类型指导您如何从中获取文本。例如,如果是 ListView 或 ListBox,则必须使用
ControlGet, outputVar, List,, SysListView321, WindRiver
上面的代码意思是,“从标题以'WindRiver'开始的应用程序中获取第一个SysListView32控件的文本(因此末尾为1),并将其放入ouputVar变量中”
如果它保留在编辑框中,您可以这样做:
ControlGetText, OutputVar, Edit1, WindRiver
这意味着“在应用程序中获取标题为 WindRiver 的第一个编辑控件的内容”
要获得相关控件的类型和数量,只需打开 Window Spy(右键单击 AHK 托盘图标)并将鼠标悬停在控件上即可查看其详细信息。
整个脚本如下所示:
Run, d:\WIndriver ....
WinWaitActive, WindRiver
ControlGetText, OutputVar, Edit1, WindRiver
MsgBox %OtputVar%
如果窗口的标题不断变化,您将不得不使用窗口类 instad title 来识别窗口。例如,您可以将记事本定位为
ControlGetText, o, Edit1, Untitled
或
COntrolGetText, o, Edit1, ahk_class Notepad
第一种方法使用窗口标题,第二种方法使用应用程序的 Window API 类,因为标题可以更改。
总而言之,要熟悉 AHK,请查看启动示例。我可以向你保证,经过几天的练习,你会发现自己可以根据需要调整任何应用程序。
要了解 AHK 的强大功能以及可以在其中完成哪些惊人的事情,请查看 Dock 模块。
您无法批量执行此操作并使用 std 重定向,因此您最好习惯 AHK 或一些类似的自动化语言(AutoIt、Phantom、WinRunner....)。顺便说一句,这种问题通常会在 AHK 社区寻求帮助论坛上得到答复。
【讨论】:
我问a similar question 哪个可能有用。只有当您的 IDE 将信息输出到 stdout/stderr 等时,这种方法才可能起作用。
我已经取得了一些(有限的)成功,连接到已经运行的进程以尝试拦截它们正在输出的数据。
具体来说,您要捕捉的是什么?它的一个窗口的输出?启动失败的错误信息?
[编辑] 我仍然不确定您要捕获的确切内容,但听起来您可以从批处理文件中启动 Python 脚本。 The script launches your IDE 并捕获 stdout 和 stderr 这将为您提供正常输出和任何错误。
【讨论】: