队
我很感激你的帮助,
我的项目背景:我有一个可执行文件,例如: 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”
我的机器和规格
我的要求
现在我已经创建了一个VB Form,多行文本框&按钮。我想要,
=======================
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()
=======================
这会打开可执行文件,即服务器,但CMD屏幕显示为空白,我已关闭它以检查文本框中的详细信息。关闭它后,文本框显示刚刚关闭的ABC服务器的内容。我可以拥有内容,但我的服务器现在没有运行!!
所以我想要一旦我点击'Start Server'按钮,(a)它应该启动exe程序即服务器,(b)保持窗口不可见(它使用的dos窗口不应该是可见的用户也不应该在任务栏上最小化。)(c)捕获该DOS窗口的内容并将其显示在我的表单上的文本框中(d)最重要的是,每当在服务器屏幕中记录新的跟踪时更新abc服务器的内容,即在DOS屏幕上添加了新行。
基本上,我将拥有此服务器的多个实例,并且我不希望用户在每个实例中查看以检查日志。一旦他们从列表框中选择了特定的abc服务器实例,文本框就会显示相关DOS可执行窗口中的实时内容。
我搜索过很多帖子但没有找到答案。任何帮助将不胜感激!!!
P.S:这个服务器是用C开发的,我相信它不是一个控制台应用程序。
谢谢,Prashant
答案 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
中显示的新行。