运行流程时如何处理是或否问题

时间:2019-03-04 07:01:09

标签: c# process pvcs

我正在尝试在C#中通过Process执行命令,但问题是该命令提出一个问题(y / n)并将进程挂在那里。您介意向我推荐解决方案吗?

public static OutputEventArgs execSync(string exe, string arguments)
        {
            OutputEventArgs oea = new OutputEventArgs();
            try
            {
                using (Process myProcess = new Process())
                {
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    startInfo.RedirectStandardOutput = true;
                    startInfo.RedirectStandardError = true;
                    startInfo.UseShellExecute = false;
                    startInfo.CreateNoWindow = true;

                    startInfo.FileName = exe;
                    startInfo.Arguments = arguments;
                    myProcess.StartInfo = startInfo;
                    myProcess.Start();
                    oea.Data = myProcess.StandardOutput.ReadToEnd();
                    myProcess.WaitForExit();
                    oea.exitCode = myProcess.ExitCode;
                }
            }catch(Exception e)
            {
                oea.Data = e.Message;
                oea.ExceptionHappened();
            }
            return oea;
        }

我的命令输出如下:

  

C:\ Users \ abc> pcli标签-prI:\ PVCS \ DEVELOPMENT \   -idabcd:abcpass -v'test3'-f -z'/Project1/APPLICATION/ajax_fetchGetCustNew.php'未知os = Windows   NT(未知)Serena PVCS版本管理器(PCLI)v8.4.0.0(内部版本668)   用于Windows NT / 80x86版权所有1985-2010 Serena软件。保留所有权利   保留。版本“ test3”已在存档中定义   “ I:\ PVCS \ DEVELOPMENT \ archives \ Project1 \ Application \ ajax_fetchGetCustNew.php-arc”。   覆盖? (是/否)

1 个答案:

答案 0 :(得分:1)

using(var myProcess = new Process()) {
    ...

    myProcess.Start();
    myProcess.StandardInput.WriteLine("y"); // Write 'y' to the processes' console input

    ...
}

注意:这种方法不是很可重用。

如果存在,最好使用/no-confirm这样的命令行选项(如John Wu在问题注释中建议的那样)。