C#System.Diagnostics.Process如何处理多个批处理文件

时间:2015-04-02 11:12:07

标签: c# wpf batch-file tomcat

我尝试使用startup.bat从我的c#wpf应用程序启动tomcat,在部署war文件之后,我想关闭它。这就是我一直在做的事情,似乎工作正常。

System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\startup.bat";
            proc.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.CreateNoWindow = true;
            proc.Start();
            // do some bla bla
            //Close Tomcat
            proc.StartInfo.Filename = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
            proc.Start();
            proc.WaitForExit();

现在我一直在想虽然它有效,但它不太正确?除非我告诉它,Tomcat应用程序启动永远不会停止,使用相同的进程关闭它会感觉不对吗?

我现在所做的就是这样:保持启动tomcat的过程,并创建另一个要求关闭的过程:

//Close tomcat            
            System.Diagnostics.Process proc_shutdown = new System.Diagnostics.Process();               
            proc_shutdown.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\";
            proc_shutdown.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat";
            proc_shutdown.StartInfo.CreateNoWindow = true;
            proc_shutdown.Start();
            proc_shutdown.WaitForExit();

我唯一不喜欢这种方法的是它会带来一条消息,询问我是否允许从我的应用程序调用shutdown.bat,我可以取消选中" Don&#39再次问我这个文件"但我仍然不喜欢它提供的用户体验。

我也尝试直接调用proc.Close()而不是proc.Filename = path_to_shutdown和proc.Start(),但它似乎挂断了我的应用程序而从未关闭tomcat。

那么启动tomcat,做一些事情然后关闭它的最佳方法是什么?谢谢,Razvan。

1 个答案:

答案 0 :(得分:0)

根据我的观察,你正在做什么可以从WPF应用程序启动和停止tomcat服务器。但是,如果要隐藏安全警告,请打开Internet Explorer转到工具 - >互联网选项,然后选择"安全"从那里选择选项卡(自定义级别..)..在杂项组中,将有一个名为

的选项

"启动应用程序和不安全文件" - >选择启用单选按钮。然后它不会告诉你"允许shutdown.bat"弹出窗口。

希望,这有帮助。