コマンド ライン プログラムで作業する場合は、ac# クラス メソッドを使用します。
コマンドライン プログラムが正常に実行され、実行された操作が正常か失敗したかをどのように判断しますか?
また、画面のコマンドライン出力を c# クラス メソッドに取得するにはどうすればよいですか?
コマンド ライン プログラムで作業する場合は、ac# クラス メソッドを使用します。
コマンドライン プログラムが正常に実行され、実行された操作が正常か失敗したかをどのように判断しますか?
また、画面のコマンドライン出力を c# クラス メソッドに取得するにはどうすればよいですか?
Process クラスを使用して、コマンド ライン コマンドを実行できます。
次のコードは、標準出力を にキャプチャしoutput
、プロセスの終了コードを に割り当てますexitCode
。
using (Process p = new Process())
{
p.StartInfo.FileName = exeName;
p.StartInfo.Arguments = args;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
int exitCode = p.ExitCode;
}
何かのようなもの:
Process mycommand = new Process();
mycommand.StartInfo.FileName = "myexe.exe";
mycommand.StartInfo.Arguments = "param1";
mycommand.StartInfo.UseShellExecute = false;
mycommand.StartInfo.RedirectStandardOutput = true;
mycommand.Start();
Console.WriteLine(mycommand.StandardOutput.ReadToEnd());
mycommand.WaitForExit();
通常、終了コードが 0 であるかどうかにかかわらず、exe の状態を判断しますが、それは間違いなく exe の作成者次第です。
Process
このクラスを使用してコマンドラインアプリを呼び出していると仮定します。
プロセスの終了コードは、を使用して見つけることができますProcess.ExitCode
。ProcessStartInfo.RedirectStandardOutput
標準出力を開始する前に設定してから、Process.StandardOutput
またはProcess.OutputDataReceived
イベントを使用することで、標準出力をリダイレクトできます。
この質問を見て、ここにリンクの説明を入力してください。
必要な追加情報はprocess.ExitCode
、それが成功したかどうかを確認することです。もちろん、コンソール アプリの Main メソッドは、失敗した場合に終了コードを返す必要がありますが、多くの場合、そうではありません。
これには、Process.Start
メソッドを使用します。渡された を使用して、プロセスの実行方法を制御できますProcessStartInfo
。
var myProcess = Process.Start(new ProcessStartInfo {
FileName = "process.exe",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
});
if (!myProcess.WaitForExit(5000)) { // give it 5 seconds to exit
myProcess.Kill();
}
if (myProcess.ExitCode != 0) {
// error!
}
var output = myProcess.StandardOutput.ReadToEnd(); // access output