我有一个VB.net程序,我在其中调用Shell函数。 我想从文件中得到这个代码产生的文本输出。 但是,这不是执行代码的返回值,所以我真的不知道该怎么做。
这个程序是一个服务,但有权访问磁盘没有问题,因为我已经logging了其他信息。 整个服务有多个线程,所以我还必须确保在写入文件的时候,它还没有被访问。
您将无法从Shell中捕获输出。
您需要将其更改为流程,并且需要从流程中捕获标准输出 (可能是错误)流。
这里是一个例子:
Dim oProcess As New Process() Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments") oStartInfo.UseShellExecute = False oStartInfo.RedirectStandardOutput = True oProcess.StartInfo = oStartInfo oProcess.Start() Dim sOutput As String Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput sOutput = oStreamReader.ReadToEnd() End Using Console.WriteLine(sOutput)
只需将输出传输到文本文件?
MyCommand > "c:\file.txt"
然后阅读文件。
Dim proc As New Process proc.StartInfo.FileName = "C:\ipconfig.bat" proc.StartInfo.UseShellExecute = False proc.StartInfo.RedirectStandardOutput = True proc.Start() proc.WaitForExit() Dim output() As String = proc.StandardOutput.ReadToEnd.Split(CChar
(vbLf))对于每个ln作为字符串输出RichTextBox1.AppendText(ln&vbNewLine)lstScan.Items.Add(ln&vbNewLine)Next
================================================== =====================两行创建一个批处理文件,如下所示:
回声
IPCONFIG
'确保你把这个批处理文件保存为ipconfig.bat或者你决定选择的名字,但是确保你把它放到了最后。