为什么vb.net中的"Process"类不能从cmd.exe中捕获错误?

rah*_*hul 1 vb.net cmd

我正在尝试在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()
Run Code Online (Sandbox Code Playgroud)

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

nik*_*eee 5

错误消息来自名为的不同输出流StandardError.只需使用StreamReader或直接读取.当然,RedirectStandardError您的ProcessStartInfo实例的-Property 必须设置为True.

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