我对使用C#很陌生,目前仅将它用于工作目的。我正在编辑一个现有的应用程序,并试图添加一个函数来调用我写的批处理文件。此批处理文件运行CLI程序并执行一些错误级别检查以确保程序正确执行并将任何错误报告给命令提示符。我不想在C#中重写这个函数,因为当我在没有主程序的情况下执行这个任务时,这个批处理文件对我很有用。但是,如果需要在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();
感谢您的所有帮助!
你怎么部署的应用?如果您使用的是msi或类似的东西,那么您可以在此创建路径作为设置。 – Brian 2012-08-06 17:30:23
我不知道我将如何部署应用程序。我真的没有那么远。我想不必使用msi,因为我们经常只是将应用程序作为可执行文件与相关文件共享。我并不完全反对这个想法,只是不知道如何完成它。 – Menimitz 2012-08-06 19:52:45