关于从C#程序调用批处理文件的建议

时间:2012-08-06 17:28:06

标签: c# batch-file path command prompt

我很擅长使用C#,目前仅用于工作目的。我正在编辑现有的应用程序,我正在尝试添加一个函数,该函数将调用我编写的批处理文件。此批处理文件运行CLI程序并执行一些错误级别检查以确保程序正确执行并将任何错误报告给命令提示符。我不希望在C#中重写此函数,因为当我在没有主程序的情况下执行此任务时,此批处理文件对我很有用。但是,如果需要在C#中重写此批处理文件的函数,我将不知道如何去做。

我在网上找到这个代码来运行我的批处理文件,它运行得很好:

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "C:mypath\\mybatfile.bat";
        proc.Start();

我对此代码的唯一问题是它需要我在部署应用程序之前设置此路径。我将把这个应用程序分发给其他一些机器,并最终将它分发给更多。我真的想找到一种方法以某种方式将此路径链接到程序保存的位置,并将此批处理文件包含在应用程序的资源中。

这一切都可能非常偏离基础,所提供的任何方向都将非常感激。

我对C#和其他PC编程中使用的术语知之甚少,因为我的大多数经验都是在uControllers中。

编辑:我的程序是一个GUI .xaml应用程序。我还决定在C#中重写我的批处理文件,因为我在批处理文件中也有一些我忘了的路径。有没有办法运行命令提示应用程序并传递命令行参数并轻松检查错误级别?

编辑2:我正在添加这个只是为了帮助将来出现在这个主题中的任何人。这是我最终使用以下Dantix的建议解决问题的方法:

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        string bat_path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
        proc.StartInfo.FileName = bat_path.Replace("\\myAppName.exe, "") + "\\myBatchFile.bat";
        proc.Start();

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用Application.StartupPath获取启动应用程序的可执行文件的路径,不包括可执行文件名。

根据您的要求,可能是
proc.StartInfo.FileName = Application.StartupPath +"\\mybatfile.bat";

答案 1 :(得分:0)

也许您可以使用application settings,或者如果您的程序是控制台应用程序,则可以使用command-line arguments