3

問題は、バッチ ファイルが終了するまで WaitForExit が待機しないことです。それはほとんどすぐに戻ってきます。

次のようにバッチファイルを開始しています。

            ProcessStartInfo startInfo = new ProcessStartInfo(batchFile);
            startInfo.UseShellExecute = true;
            startInfo.Arguments = arguments;

            using (Process p = Process.Start(startInfo))
            {
                p.WaitForExit();
            }

ありとなしでやってみましたUseShellExecute

4

2 に答える 2

1

代わりに、コマンド ライン引数として「/c yourbatchfile」を指定して cmd を実行してみてください。

于 2013-10-08T21:35:29.127 に答える
0

StdOutをリダイレクトして、閉じるまで読むことができるようです。

この同様の質問からこのアイデアを取り入れました。

スニペットを適応させると、次のようになります。

ProcessStartInfo startInfo = new ProcessStartInfo(batchFile);
//startInfo.UseShellExecute = true;
startInfo.Arguments = arguments;
startInfo.RedirectStandardOutput = true;

Process p = Process.Start(startInfo);
String output = proc.StandardOutput.ReadToEnd();
于 2013-10-08T19:08:50.143 に答える