VB.Net shell输出有时不返回

时间:2017-07-27 09:45:50

标签: vb.net shell streamreader

对于99%的所有Shell命令,此代码工作正常,但对于一个命令,我没有得到返回的文本,这通常在Shell窗口中可见。这是我用来执行命令和读回结果的代码:

Function RunCommandCom(command As String, arguments As String) As String()

Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
Dim output As String

pi.Arguments = " " + "/c" + " " + command + " " + arguments
pi.FileName = "cmd.exe"
pi.RedirectStandardOutput = True 'pi.CreateNoWindow = True
pi.WindowStyle = ProcessWindowStyle.Normal
pi.UseShellExecute = False
p.StartInfo = pi
p.Start()
output = p.StandardOutput.ReadToEnd()
p.WaitForExit()
p.Close()

If output Is ""
Then
Return Nothing
Else
Return output.Replace(Chr(13), "").Split(Chr(10))
End If


End Function

命令制作问题执行正常。它应该在数据库中创建一个条目,在调用我的函数后它肯定存在。直接在Shell中执行命令会生成相同的条目,我可以看到返回的文本。

有没有人知道为什么流读取器不会读取/包含任何正确的这一特殊命令?

1 个答案:

答案 0 :(得分:0)

精氨酸。我发现了这个问题。这两个命令将其输出发送到StandardError流。我不知道为什么,因为没有发生错误。