-2

入力パラメーターをコンソール アプリケーションに渡し、バッチ ファイルを使用して出力パラメーターを取得する必要があります。

手順は次のとおりです。

  1. 入力パラメーターを使用してコンソール アプリを実行します。(これが現在のプログラムの実行方法です。)

  2. 次のステップに進む前に、コンソール アプリからの応答を待ちたいと思います。プログラムは Web サービスを呼び出しているため、待機する必要があります。Web サービスへの応答コード呼び出し = 0 を確認する必要があります。

  3. 次のステップは、Web サービスからの応答によって異なります。

    を。Web サービスからの応答 = 0 の場合、Web サービスの顧客アカウントを閉じるためのパラメーターを使用してコンソール アプリが再度呼び出されます。

    また、このステップでは、コンソール アプリへの 2 回目の呼び出しの結果が、ユーザーに表示されるメッセージに表示されます。

    b. Web サービスからの応答が 0 でない場合、問題の内容を示すメッセージがユーザーに表示されます。それ以上の呼び出しは行われません。

したがって、この目標を達成する方法について、コードを示したり、リファレンスを参照したりできますか?

4

2 に答える 2

1

これをもう一度試してみましょう。これは、私があなたが望むと思うことを行うバッチコードです。

@echo off
call myApp.exe %*
set result=%errorlevel%
echo result = %result%

if %result%==0 call myApp.exe close (or whatever the paramaters are)
if %result%==1 echo "Message explaining what error code 1 means"
if %result%==2 echo "Message explaining what error code 2 means"
...

これにより、バッチ ファイルに渡したパラメーターを使用して myApp.exe が呼び出されます。%*必要に応じて、ハードコードされた入力に置き換えることができます。これにより、アプリケーションの終了コードが出力され、再度呼び出して閉じるか、エラー コードを説明するメッセージを出力できます。


MSDNから変更

// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "externalExecutable.exe";
p.Arguments = "-arg1 -arg2";
p.Start();
// Wait for the child process to exit before
// reading to the end of its redirected stream.
p.WaitForExit();
// Read the output stream
string output = p.StandardOutput.ReadToEnd();
// Parse the output to see what you should do
// Or just use the exit code from the proccess
if (output.Equals("0") || p.ExitCode == 0) {
   // Do what you need to in this case
} else {
   // Do something else here
}
于 2013-04-22T22:06:20.290 に答える