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()

コマンドが有効なdosコマンドである場合、コードは正常に実行され、Replyで出力を取得します。コマンドに出力がない場合(例:cd \)、応答はnullです。問題は、コマンドが無効な場合でも応答がnullになることです。「コマンドが内部コマンドまたは外部コマンドとして認識されません...」、「指定されたパスが見つかりません。」などのエラーをキャプチャする方法。助けてください。ありがとう..

4

2 に答える 2

5

エラーメッセージは、と呼ばれる別の出力ストリームで送信されますStandardError。StreamReaderを使用するか、直接読んでください。もちろん、インスタンスのRedirectStandardError-PropertyはProcessStartInfoに設定する必要がありますTrue

また、ExitCodeプログラムの終了後にプログラムのExitCodeを返す-Propertyがあります。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 に答える