0
を返さないことがありますが、このコードは正常に動作しますが、通常はシェルウィンドウに表示される返されたテキストは取得できません。ここで私は、コマンドを実行して結果をリードバックするために使用するコードは次のとおりです。VB.Netシェル出力は、すべてのmy shellコマンドの99%に対して
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
問題を作成するコマンドが細かい実行されます。それはデータベースにエントリを作成しなければなりません。これは私のファンクションを呼んだ後に定義的に存在します。シェルで直接コマンドを実行すると、同じエントリが生成され、返されたテキストが表示されます。
ストリームリーダーがこの1つの特別なコマンドのために何も読み込み/格納しない理由を知っている人はいますか?
同じ問題を引き起こす別のコマンドを特定しました。両方とも何らかの形で「作成」コマンドであり、他のコマンドよりも時間がかかることがあります。マイグレーションは問題の理由ですか? –
両方のプログラムが実際にstdoutに書き込むことは確かですか?どちらも常に何も返さないのですか? –
私はそう思っています。私が入力したのは、私のコードがcmd.exeに送信するのとまったく同じで、後で同じデータをデータベースで見ることができるからです。 シェルウィンドウに表示されているテキスト 両方のコマンドで、stoudtストリームを読み込むときに空の文字列が表示されます stoudtストリームには、通常シェルウィンドウに表示されるものが含まれています。 –