1

Process を使用してバッチ コマンドを呼び出し、実行の出力を読み取ります。出力行を通じて、実行の成功または失敗を分析します。win7 ではすべてが正常に動作しますが、WindowsXP では標準出力から行を読み取ることができません。WindowsXP のコマンド コンソール ウィンドウで手動でバッチ ファイルが正常に動作することを保証します。以下は私のコードです:

//this method is entrance of execution
public bool buildApk()
{
    string launch = "\"" + System.Environment.CurrentDirectory + @"\SmartCon\start_up_build" + "\"";
    string output = ExecuteAsync(launch);
    return output.Contains("SUCCESS");
}

public static string ExecuteAsync(string dosCommand)
{
    string output = "";     
    StringBuilder sbOutput=new StringBuilder ("");

    if (dosCommand != null && dosCommand != "")
    {
        Process process = new Process();     
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "cmd.exe";      
        startInfo.Arguments = "/C " + dosCommand;   
        startInfo.UseShellExecute = false;    
        startInfo.RedirectStandardInput = false;   
        startInfo.RedirectStandardOutput = true;   
        startInfo.CreateNoWindow = true;     
        process.StartInfo = startInfo;

        try
        {
            if (process.Start())       
            {
                while (!process.HasExited )
                {
                    string d = process.StandardOutput.ReadLine();//here I read nothing in windowxp, but in win7, all things go well
                    sbOutput.Append(d);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error:" + ex.Message + "\n" + ex.StackTrace);
        }
        finally
        {
            if (process != null)
            {
                process.Close();
                process.Dispose();
                process = null;
            }
        }
    }
    return sbOutput .ToString ();
}
4

0 に答える 0