如何动态捕获基于DOS的可执行文件的内容,保持打开处理?

时间:2012-11-01 12:47:03

标签: vb.net dos capture output

我很感激你的帮助,

我的项目背景:我有一个可执行文件,例如: abcd.exe实际上是一种在MS DOS窗口中打开的服务器,一旦启动,它就会继续运行。如上所述,因为它是一个服务器,它会不断记录一些日志跟踪,并不断在DOS窗口中逐个添加新行。这个服务器需要一些参数来启动,所以这里的参数是配置文件的路径,其中保存了所有的配置细节。因此,要启动此服务器,我需要在命令提示符下提供

*开始>运行> CMD

abdc.exe -lookup“C:\ MyServer \ Bin \ designConfig.properties”

为避免手动步骤,我创建了批处理文件,例如带有以下行的abcd.bat

TITLE:我的服务器 - NODE 1234(服务器)

abdc.exe -lookup“C:\ MyServer \ Bin \ designConfig.properties”

我的机器和规格

  • 上面提到的abdc.exe文件是64位服务器。我的操作系统:Windows 7 64 位平台:VB Visual Studio 2012或MS Access VBA

我的要求

现在我已经创建了一个VB Form,多行文本框&按钮。我想要,

  1. 点击该按钮后,它应该查找可执行文件或批处理文件,并通过接受参数启动abcd.exe服务器程序。 (我使用下面的代码完成了这个)
  2. =======================

        Dim abc As New Process
        Dim abcinfo As New System.Diagnostics.ProcessStartInfo
        abcinfo.FileName = "C:\ABCD\abdc.bat""
        abcinfo.RedirectStandardOutput = True
        abcinfo.RedirectStandardError = True
    
        abcinfo.UseShellExecute = False
        abcinfo.ErrorDialog = False
    
        abc.StartInfo = abcinfo
        abc.Start()
        Dim abclog As System.IO.StreamReader = abc.StandardError
        abc.BeginOutputReadLine()
        TextBox1.Text = abclog.ReadToEnd()
        abc.WaitForExit()
    

    =======================

    1. 这会打开可执行文件,即服务器,但CMD屏幕显示为空白,我已关闭它以检查文本框中的详细信息。关闭它后,文本框显示刚刚关闭的ABC服务器的内容。我可以拥有内容,但我的服务器现在没有运行!!

    2. 所以我想要一旦我点击'Start Server'按钮,(a)它应该启动exe程序即服务器,(b)保持窗口不可见(它使用的dos窗口不应该是可见的用户也不应该在任务栏上最小化。)(c)捕获该DOS窗口的内容并将其显示在我的表单上的文本框中(d)最重要的是,每当在服务器屏幕中记录新的跟踪时更新abc服务器的内容,即在DOS屏幕上添加了新行。

    3. 基本上,我将拥有此服务器的多个实例,并且我不希望用户在每个实例中查看以检查日志。一旦他们从列表框中选择了特定的abc服务器实例,文本框就会显示相关DOS可执行窗口中的实时内容。

      我搜索过很多帖子但没有找到答案。任何帮助将不胜感激!!!

      P.S:这个服务器是用C开发的,我相信它不是一个控制台应用程序。

      谢谢,Prashant

1 个答案:

答案 0 :(得分:0)

很抱歉,但我无法弄清楚你要做什么,但如果你想在DOS窗口(= cmd.exe)中重定向输出,请按照以下步骤操作:

your.exe yourparameter1 yourparameter2 >redirect_here.log 2>&1

第一个>将sysout重定向到redirect_here.log -file,2>&1将syser重定向到同一个文件。

如果要跟踪在另一个DOS窗口中写入redirect_here.log文件的内容,则需要使用tail.exe。如果我没记错的话,您可以在Windows资源工具包中找到tail.exe,但我使用的是UnxUtils捆绑的版本。它是一个zip -package,tail.exe可以在\ usr \ local \ wbin \ -folder中找到,还有其他有用的工具。以下是使用tail.exe

的方法
tail -f redirect_here.log 

-f -switch意味着您希望tail.exe显示redirect_here.log中显示的新行。