1

我正在尝试在 vb.net 程序中运行 dos 命令并捕获输出。我有以下代码:

    Dim CMDServer As Diagnostics.ProcessStartInfo
    Dim CMDReply As Diagnostics.Process
    CMDServer = New Diagnostics.ProcessStartInfo
    CMDServer.FileName = "cmd.exe"
    CMDServer.UseShellExecute = False
    CMDServer.RedirectStandardOutput = True
    CMDServer.CreateNoWindow = True
    CMDServer.Arguments = "/C " + command
    CMDReply = Process.Start(CMDServer)
    Dim Reply As String = CMDReply.StandardOutput.ReadToEnd()

如果 command 是有效的 dos 命令,则代码成功运行,并且我在回复中得到输出。如果命令没有输出(例如:cd\),则回复为空。问题是即使命令无效,回复也是空的。如何捕获诸如“命令未被识别为内部或外部命令......”,“系统找不到指定的路径......”等错误。请帮助我。谢谢..

4

2 回答 2

5

错误消息来自一个不同的输出流,称为StandardError. 只需使用 StreamReader 或直接阅读即可。当然,RedirectStandardError您的实例的 -PropertyProcessStartInfo必须设置为True.

此外,还有一个ExitCode-Property,它在程序完成后返回程序的 ExitCode。0意为“成功”。其他错误代码可以在 MSDN 文档中找到。以下是常见退出代码的列表。例如,2表示The system cannot find the file specified.

于 2012-12-23T16:52:07.573 回答
0

错误可能是输出CMDReply.StandardError,而不是CMDReply.StandardOutput; 也尝试阅读它。(并且也设置CMDServer.RedirectStandardErrorTrue。)

于 2012-12-23T16:51:07.837 回答