1

我对使用 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();

感谢所有的帮助!

4

2 回答 2

3

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

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

于 2012-08-06T17:40:51.330 回答
0

也许您可以使用应用程序设置,或者如果您的程序是控制台应用程序,您可以使用命令行参数

于 2012-08-06T17:37:10.130 回答