2

团队,

我会很感激你在这方面的帮助,

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

*开始 > 运行 > CMD

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

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

标题:我的服务器 - 节点 1234(服务器)

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

我的机器和规格

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

我的要求

现在我创建了一个 VB 表单、多行文本框和按钮。我想,

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

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

    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. 所以我希望一旦我单击“启动服务器”按钮,(a)它应该启动 exe 程序,即服务器,(b)保持窗口不可见(它使用的 dos 窗口不应该对用户可见,也不应该在任务栏上最小化.) (c) 捕获该 DOS 窗口的内容并将它们显示在我的表单上的文本框中 (d) 最重要的是,每当在服务器屏幕上记录新的跟踪记录时更新 abc 服务器的内容,即在 DOS 屏幕上添加新行.

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

我搜索了很多线程,但没有找到答案。任何帮助将不胜感激!!!

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

谢谢,普拉尚特

4

1 回答 1

0

抱歉,但我不太清楚您要做什么,但是如果您想在 DOS 窗口 (=cmd.exe) 中重定向输出,请按以下步骤操作:

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

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

如果您想在另一个 DOS 窗口中跟踪写入redirect_here.log-file 的内容,您需要使用tail.exe. 如果我没记错的话,你可以在 Windows Resource Kit 中找到,但我使用的是与UnxUtilstail.exe捆绑的。它是一个 zip 包,可以在 \usr\local\wbin\ 文件夹中找到,以及其他有用的工具。以下是使用方法:tail.exetail.exe

tail -f redirect_here.log 

-f-switch 表示您希望显示tail.exe新行,因为它们出现在redirect_here.log.

于 2012-11-02T11:22:10.567 回答